- Fix the fix (wrong behavior)

This commit is contained in:
Felipe Pena 2010-11-08 20:26:14 +00:00
parent aa3d81686f
commit 590ad22361
2 changed files with 4 additions and 4 deletions

View File

@ -1795,7 +1795,7 @@ SPL_METHOD(RegexIterator, accept)
break;
case REGIT_MODE_REPLACE:
replacement = zend_read_property(intern->std.ce, intern->inner.zobject, "replacement", sizeof("replacement")-1, 1 TSRMLS_CC);
replacement = zend_read_property(intern->std.ce, getThis(), "replacement", sizeof("replacement")-1, 1 TSRMLS_CC);
result = php_pcre_replace_impl(intern->u.regex.pce, subject, subject_len, replacement, 0, &result_len, -1, &count TSRMLS_CC);
if (intern->u.regex.flags & REGIT_USE_KEY) {

View File

@ -9,23 +9,23 @@ class foo extends ArrayIterator {
'test1'=>'test888',
'test2'=>'what?',
'test3'=>'test999'));
$this->replacement = '[$1]';
}
}
$h = new foo;
$i = new RegexIterator($h, '/^test(.*)/', RegexIterator::REPLACE);
$h->replacement = '[$0]';
$i->replacement = '[$0]';
foreach ($i as $name=>$value) {
echo $name . '=>' . $value . "\n";
}
$h->replacement = '$1';
$i->replacement = '$1';
foreach ($i as $name=>$value) {
echo $name . '=>' . $value . "\n";
}
$h = new foo;
$i = new RegexIterator($h, '/^test(.*)/', RegexIterator::REPLACE);
$i->replacement = '[$1]';
foreach ($i as $name=>$value) {
echo $name . '=>' . $value . "\n";
}