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
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: jesse dot collis at gmail dot com
New email:
PHP Version: OS:

 

 [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 02:01:33 2025 UTC