cómo trabajar con RegexIterator :: modalidad REPLACE?
Pregunta
¿Qué hay de malo en mi código:
$i = new RegexIterator(
new ArrayIterator(array(
'test1'=>'test888',
'test2'=>'what?',
'test3'=>'test999')),
'/^test(.*)/',
RegexIterator::REPLACE);
foreach ($i as $name=>$value)
echo $name . '=>' . $value . "\n";
El iterador está vacía, ¿por qué? Gracias por su ayuda!
Solución 2
Como ya se ha dicho, se trata de un fallo en PHP. Informé a php.net: http://bugs.php.net/bug. php? id = 50579
Otros consejos
Si ommit el modo de funcionamiento (3er parámetro en su nuevo estado de RegexIterator) obtendrá los valores coincidentes, así:
$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>';
Se puede jugar con los diferentes modos de operación, dependiendo de lo que desee. Ir leer en la documentación setMode: http://www.php.net/ manual de / en / regexiterator.setmode.php
Considere el siguiente código
$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>";
}
Salida
good2:2
birds:2
young:8 girls
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow