#50232 [Com]: preg_replace - pattern description omits mention of string delimiter

From: Date: Thu, 03 Dec 2009 06:43:17 +0000
Subject: #50232 [Com]: preg_replace - pattern description omits mention of string delimiter
References: 1  Groups: php.doc.bugs 
Request: Send a blank email to doc-bugs+get-3391@lists.php.net to get a copy of this message
 ID:               50232
 Comment by:       traveltechrcs at yahoo dot com
 Reported By:      simonokewode at hotmail dot com
 Status:           Open
 Bug Type:         Documentation problem
 Operating System: n/a
 PHP Version:      Irrelevant
 New Comment:

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


Previous Comments:
------------------------------------------------------------------------

[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



Thread (6 messages)

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