php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #47686 preg_quote is escaping '-' when it shouldn't
Submitted: 2009-03-17 04:58 UTC Modified: 2009-03-17 12:53 UTC
Votes:2
Avg. Score:4.5 ± 0.5
Reproduced:2 of 2 (100.0%)
Same Version:2 (100.0%)
Same OS:1 (50.0%)
From: jesse dot collis at gmail dot com Assigned:
Status: Not a bug Package: PCRE related
PHP Version: 5.3CVS-2009-03-17 (snap) OS: OSX 10.5.6 / doesn't matter
Private report: No CVE-ID: None
 [2009-03-17 04:58 UTC] jesse dot collis at gmail dot com
Description:
------------
In a simple test of preg_quote is showing the function is not behaving 
as it does in PHP 5.2.x. preg_quote is escaping '-' (minus) characters 
when it shouldn't.


Reproduce code:
---------------
Current Results
-----------------------
var_dump(preg_quote("[0-2]")); => string(8) "\[0\-2\]" 

var_dump(preg_quote("0-2")); => string(4) "0\-2" 

var_dump(preg_quote("a-z 0-9~%.:_\-")); => string(20) "a\-z 0\-9~%\.\:_\\\-"

Expected result:
----------------
the three lines printed above should come out the following way.

var_dump(preg_quote("[0-2]")); => string(7) "\[0-2\]" 

var_dump(preg_quote("0-2")); => string(3) "0-2" 

var_dump(preg_quote("a-z 0-9~%.:_\-")); => string(17) "a-z 0-9~%\.\:_\\-
"


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2009-03-17 11:22 UTC] felipe@php.net
This was due the fix for Bug#47229.
But does this breaking your code?
 [2009-03-17 12:41 UTC] jesse dot collis at gmail dot com
From further investigation, although the change in behaviour of 
preg_quote in Bug#47229 breaks certain elements in the Code Ignighter 
Framework, it has more to do with the framework than a logical error in 
preg_quote.

If anyone is interested, the default settings of Code Igniter 1.7.1 will 
cause URI.php line 189 to fault and return a false negative. I will 
alert them of this.
 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Tue Jul 15 07:01:31 2025 UTC