#50232 [Opn->Csd]: preg_replace - pattern description omits mention of string delimiter

From: Date: Sat, 19 Dec 2009 21:11:22 +0000
Subject: #50232 [Opn->Csd]: preg_replace - pattern description omits mention of string delimiter
References: 1  Groups: php.doc.bugs 
Request: Send a blank email to doc-bugs+get-3518@lists.php.net to get a copy of this message
ID: 50232 Updated by: degeberg@php.net Reported By: simonokewode at hotmail dot com -Status: Open +Status: Closed Bug Type: Documentation problem Operating System: n/a PHP Version: Irrelevant New Comment: This bug has been fixed in the documentation's XML sources. Since the online and downloadable versions of the documentation need some time to get updated, we would like to ask you to be a bit patient. Thank you for the report, and for helping us make our documentation better. I've added an additional section that elaborates on the delimiters. Previous Comments: ------------------------------------------------------------------------ [2009-12-19 21:10:23] svn@php.net Automatic comment from SVN on behalf of degeberg Revision: http://svn.php.net/viewvc/?view=revision&revision=292344 Log: Closes #50232. ------------------------------------------------------------------------ [2009-12-03 06:43:16] traveltechrcs at yahoo dot com I am new to php and found this issue after and install of an opensource search script install. I did many searches and this is one of the resources I found. The other resources provided no clear cut resolutions as examples for using preg_replace syntax with delimiters. I also found that many support folks are directing their users to include a line of code to simply turn of the error reporting. I'm not sure what kind of problems this will cause down the road but it doesn't seem like a good idea to me. Other resources are directing users to use the mb_eregi_replace as a solution. As a noobie as put in your comments I think we could use a clear, real life example and direction as far as error reporting and the use of mb_eregi_replace. Here is a line of my code that was converted to use mb_eregi_replace. $a = mb_eregi_replace($char[0], $char[1], $a); It would help to see an example of a conversion from that to preg_replace. Thanks Tsalagi ------------------------------------------------------------------------ [2009-11-24 20:38:47] simonokewode at hotmail dot com Well that's good to know. So someone needing to move from ereg_replace to this function is expected to know that they should read the "Regular Expressions (Perl-Compatible)" description first? A note to that effect would help the many people who will be coming straight here for a single purpose. If PHP is eliminating a function, I think it is right to make it straightforward to convert. ------------------------------------------------------------------------ [2009-11-24 19:48:01] daniel dot egeberg at gmail dot com It already says that delimiters are needed around the pattern here: http://php.net/manual/en/intro.pcre.php ------------------------------------------------------------------------ [2009-11-19 15:56:22] simonokewode at hotmail dot com Description: ------------ Users moving from ereg_replace to preg_replace will not know that delimiters are required unless already familiar w/ regex. Huge numbers of newbies will need to do this. This entry does not need to explain how to use them, but should mention that they are required, and there should be an explanation of regex delimiters somewhere in the manual since they are critical for basic functionality. The preg_quote entry mentions delimiters, and may be a good reference link from the preg_replace pattern description. A very simple example of preg_replace in the function list would highlight the existence and use of delimiters; then the complex examples will be easier to understand. preg_replace('/text/', 'new text', $string) Reproduce code: --------------- --- From manual page: function.preg-replace --- Parameters pattern The pattern to search for. It can be either a string or an array with strings. The e modifier makes preg_replace() treat the replacement parameter as PHP code after the appropriate references substitution is done. Tip: make sure that replacement constitutes a valid PHP code string, otherwise PHP will complain about a parse error at the line containing preg_replace(). Expected result: ---------------- Parameters pattern The pattern to search for. It can be either a string or an array with strings. Use regex delimiters on strings [link to preg_quote() or regex ref]. The e modifier makes preg_replace() treat the replacement parameter as PHP code after the appropriate references substitution is done. Tip: make sure that replacement constitutes a valid PHP code string, otherwise PHP will complain about a parse error at the line containing preg_replace(). ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=50232&edit=1

« previous php.doc.bugs (#3518) next »