#10111 [Dup->Bgs]: e modifier alters string extraction in preg_replace

From: 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

« previous php.bugs (#30738) next »