|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2014-05-09 13:39 UTC] david dot a dot schmitt at verizon dot com
[2014-05-11 12:52 UTC] felipe@php.net
[2014-05-11 12:53 UTC] felipe@php.net
-Status: Open
+Status: Feedback
[2014-05-12 12:48 UTC] david dot a dot schmitt at verizon dot com
-Status: Feedback
+Status: Open
[2014-05-12 12:48 UTC] david dot a dot schmitt at verizon dot com
[2014-05-12 12:56 UTC] david dot a dot schmitt at verizon dot com
-Status: Open
+Status: Closed
[2014-05-12 12:56 UTC] david dot a dot schmitt at verizon dot com
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Oct 25 20:00:01 2025 UTC |
Description: ------------ 1. preg_match() behaviour does not match pcregrep behaviour for some patterns involving possessive quantifiers. 2. preg_match() behaviour also appears internally inconsistent when switching from greedy to possessive quantifiers in those cases (+ to ++). Below is my environment (Fedora 20): $ php -V PHP 5.5.12 (cli) (built: May 3 2014 07:10:11) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies $ pcregrep -V pcregrep version 8.33 2013-05-28 $ php -r "phpinfo();" | grep PCRE PCRE (Perl Compatible Regular Expressions) Support => enabled PCRE Library Version => 8.33 2013-05-28 Test script: --------------- #!/bin/sh export GREEDY='\A(?:[^"]++|"(?:[^"]*+|"")*+")+' export POSSESSIVE="$GREEDY+" export TEXT='NON QUOTED "QUOT""ED"' export PATTERN SCRIPT=' $t = getenv("TEXT"); $p = getenv("PATTERN"); preg_match("/$p/", $t, $m); print "$m[0]\n"; ' for PATTERN in "$GREEDY" "$POSSESSIVE" do echo "$TEXT" | pcregrep -o -e "$PATTERN" php -r "$SCRIPT" done Expected result: ---------------- NON QUOTED "QUOT""ED" NON QUOTED "QUOT""ED" NON QUOTED "QUOT""ED" NON QUOTED "QUOT""ED" Actual result: -------------- NON QUOTED "QUOT""ED" NON QUOTED "QUOT""ED" NON QUOTED "QUOT""ED" NON QUOTED