php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #10111 e modifier alters string extraction in preg_replace
Submitted: 2001-04-02 08:08 UTC Modified: 2003-01-20 17:24 UTC
From: gcousin at startem dot net Assigned:
Status: Not a bug Package: PCRE related
PHP Version: 4.0.4pl1 OS: Linux Debian
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: gcousin at startem dot net
New email:
PHP Version: OS:

 

 [2001-04-02 08:08 UTC] gcousin at startem dot 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.

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2002-03-11 09:52 UTC] kerry at lothrop dot 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.
 [2002-04-09 17:01 UTC] 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).
 [2003-01-20 17:24 UTC] sniper@php.net
As is the one this was duplicate of: #12668

 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Nov 28 09:01:28 2024 UTC