5

我的代码有什么问题:

$i = new RegexIterator(
  new ArrayIterator(array(
    'test1'=>'test888', 
    'test2'=>'what?', 
    'test3'=>'test999')),
  '/^test(.*)/',
  RegexIterator::REPLACE);

foreach ($i as $name=>$value)
  echo $name . '=>' . $value . "\n";

迭代器是空的,为什么?谢谢你的帮助!

4

3 回答 3

1

如果您省略操作模式(新 RegexIterator 语句中的第三个参数),您将获得匹配值,如下所示:

$array = array('test1' => 'test888', 'test2' => 'what?', 'test3' => 'test999');
$pattern = '/^test(.*)/';

echo '<pre>';
echo "DEFAULT\n";
$arrayIterator = new ArrayIterator($array);
$regexIterator = new RegexIterator($arrayIterator, $pattern);
foreach ($regexIterator as $value) {echo "$value\n";}
echo '</pre>';

您可以根据需要使用不同的操作模式。去阅读 setMode 文档:http ://www.php.net/manual/en/regexiterator.setmode.php

于 2009-12-24T09:31:26.670 回答
0

如前所述,这是 PHP 中的一个错误。我向 php.net 报告:http ://bugs.php.net/bug.php?id=50579

于 2010-07-30T06:26:47.000 回答
0

考虑以下代码

$mixedArray=array(
    'tester2',
    'tes1',
    'bad4',
    '2good2',
    '2birds',
    'birds8',
    '8young girls',
    '6 young boys'
);


$ait=new ArrayIterator($mixedArray);
$regexIt=new RegexIterator($ait,'/^(\d+)(\w+)/', RegexIterator::REPLACE);
$regexIt->replacement='$2:$1';

foreach($regexIt as $key=>$value){
    echo $value."<br>";
}

输出

good2:2
birds:2
young:8 girls
于 2014-10-28T04:09:07.877 回答