php-src/ext/pcre/tests/marks.phpt
Nikita Popov 42562ee913 Add support for PCRE marks
If a MARK is set then it will be returned in the $matches array
unter key "MARK". If no MARK is used or passed, the key will not
be set.
2014-03-17 22:32:40 +01:00

203 lines
2.7 KiB
PHP

--TEST--
Test support for PCRE marks
--SKIPIF--
<?php
if (version_compare(PCRE_VERSION, '8.1', '<')) {
die('skip PCRE_VERSION >= 8.1 is required for MARK support');
}
?>
--FILE--
<?php
$regex = <<<'REGEX'
/
_ (a) (*MARK:A_MARK) _
| _ (b) _
| _ (c) (*MARK:C_MARK) _
| _ (d) _
/x
REGEX;
var_dump(preg_match($regex, '_c_', $matches));
var_dump($matches);
var_dump(preg_match_all($regex, '_a__b__c__d_', $matches, PREG_PATTERN_ORDER));
var_dump($matches);
var_dump(preg_match_all($regex, '_a__b__c__d_', $matches, PREG_SET_ORDER));
var_dump($matches);
var_dump(preg_replace_callback($regex, function($matches) {
var_dump($matches);
return $matches[0];
}, '_a__b__c__d_'));
?>
--EXPECTF--
int(1)
array(5) {
[0]=>
string(3) "_c_"
[1]=>
string(0) ""
[2]=>
string(0) ""
[3]=>
string(1) "c"
["MARK"]=>
string(6) "C_MARK"
}
int(4)
array(6) {
[0]=>
array(4) {
[0]=>
string(3) "_a_"
[1]=>
string(3) "_b_"
[2]=>
string(3) "_c_"
[3]=>
string(3) "_d_"
}
[1]=>
array(4) {
[0]=>
string(1) "a"
[1]=>
string(0) ""
[2]=>
string(0) ""
[3]=>
string(0) ""
}
[2]=>
array(4) {
[0]=>
string(0) ""
[1]=>
string(1) "b"
[2]=>
string(0) ""
[3]=>
string(0) ""
}
[3]=>
array(4) {
[0]=>
string(0) ""
[1]=>
string(0) ""
[2]=>
string(1) "c"
[3]=>
string(0) ""
}
[4]=>
array(4) {
[0]=>
string(0) ""
[1]=>
string(0) ""
[2]=>
string(0) ""
[3]=>
string(1) "d"
}
["MARK"]=>
array(2) {
[0]=>
string(6) "A_MARK"
[2]=>
string(6) "C_MARK"
}
}
int(4)
array(4) {
[0]=>
array(3) {
[0]=>
string(3) "_a_"
[1]=>
string(1) "a"
["MARK"]=>
string(6) "A_MARK"
}
[1]=>
array(3) {
[0]=>
string(3) "_b_"
[1]=>
string(0) ""
[2]=>
string(1) "b"
}
[2]=>
array(5) {
[0]=>
string(3) "_c_"
[1]=>
string(0) ""
[2]=>
string(0) ""
[3]=>
string(1) "c"
["MARK"]=>
string(6) "C_MARK"
}
[3]=>
array(5) {
[0]=>
string(3) "_d_"
[1]=>
string(0) ""
[2]=>
string(0) ""
[3]=>
string(0) ""
[4]=>
string(1) "d"
}
}
array(3) {
[0]=>
string(3) "_a_"
[1]=>
string(1) "a"
["MARK"]=>
string(6) "A_MARK"
}
array(3) {
[0]=>
string(3) "_b_"
[1]=>
string(0) ""
[2]=>
string(1) "b"
}
array(5) {
[0]=>
string(3) "_c_"
[1]=>
string(0) ""
[2]=>
string(0) ""
[3]=>
string(1) "c"
["MARK"]=>
string(6) "C_MARK"
}
array(5) {
[0]=>
string(3) "_d_"
[1]=>
string(0) ""
[2]=>
string(0) ""
[3]=>
string(0) ""
[4]=>
string(1) "d"
}
string(12) "_a__b__c__d_"