#10111 [Dup->Bgs]: e modifier alters string extraction in preg_replace
| From: | sniper@php.net | Date: | Mon, 20 Jan 2003 23:24:45 +0000 |
| Subject: | #10111 [Dup->Bgs]: e modifier alters string extraction in preg_replace | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-30738@lists.php.net to get a copy of this message | ||
ID: 10111
Updated by: sniper@php.net
Reported By: gcousin@startem.net
-Status: Duplicate
+Status: Bogus
Bug Type: PCRE related
Operating System: Linux Debian
PHP Version: 4.0.4pl1
New Comment:
As is the one this was duplicate of: #12668
Previous Comments:
------------------------------------------------------------------------
[2002-04-09 17:01:50] jimw@php.net
this is a duplicate of #12668 (which has more discussion about the
issue, which is why i'm pointing this at the later report instead of
vice versa).
------------------------------------------------------------------------
[2002-03-11 09:52:22] kerry@lothrop.de
This is a nice feature, not a bug. See my user contributed note in the
manual under preg_replace. Maybe someone should document this behavior.
------------------------------------------------------------------------
[2001-04-02 08:08:30] gcousin@startem.net
A short example :
$newsitem = preg_replace('/(<([a-zA-Z-]+)
([^>]*)analyze="[0-9]*"([^>]*)>)(.*?)(<\/\\2>)/mse',
"'\\1'.transformNewsitemPart('\\5').'\\6'", $newsitem);
where I transform the text between any html tag with "analyze"
attribute.
The problem is that the preg_replace function with e modifier adds
backslashes before any " in the matched text (\\5) BEFORE the function
transformNewsitemPart is interpreted.
The behaviour is new in php 4.0.4. It was not present in php 4.0.3.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=10111&edit=1