我有一些带有一些字符串的数组,我想用RegexIterator
替换匹配字符串上的一些东西,但也要在数组中保留未匹配的字符串。
这是我的代码:
$a = new ArrayIterator(array('LeaveThisInArray','value1', 'value2'));
$i = new RegexIterator($a, '/^(value)(\d+)/', RegexIterator::REPLACE);
$i->replacement = '$2:$1';
print_r(iterator_to_array($i));
我得到这个作为输出:
Array
(
[0] => 1:value
[1] => 2:value
)
但我想要的是:
Array
(
[0] => LeaveThisInArray
[1] => 1:value
[2] => 2:value
)
我可以设置任何标志或其他东西,因为我在spl文档中找不到多少。
答案 0 :(得分:2)
您可以尝试使用preg_replace
示例代码:
$re = "/^(value)(\\d+)/m";
$str = "LeaveThisInArray\nvalue1\nvalue2";
$subst = '$2:$1';
$result = preg_replace($re, $subst, $str);
尝试在现有代码中使用^(value)(\d*)
。
答案 1 :(得分:1)
我现在能想到的最接近的是这样的:
$a = new ArrayIterator(array('LeaveThisInArray','value1', 'value2'));
$i = new RegexIterator($a, '/^(?:(value)(\d+))?/', RegexIterator::REPLACE);
$i->replacement = '$2$1';
print_r(iterator_to_array($i));