我在想如何更换表格的最后一项,如下所示:
content[1]
content[1][officeImage]
content[2][officeImage]
content[3][something][officeImage]
...
"阵列"的深度可以是无限的,我需要替换他的最后一个:
content[replaced]
content[1][replaced]
content[2][replaced]
content[3][something][replaced]
...
这里有人可以写preg_replace()等吗? 感谢
编辑:
我有这个:
preg_replace('~\[.*!?\]~', '[replaced]', $parent);
但它从" content[1][officeImage]
"返回这个" content[replaced]
" :
答案 0 :(得分:3)
preg_replace('~^.*\[\K[^]]+~m', 'replaced', $parent);
仅当m
包含需要一次替换的多行时,才需要$parent
(多行)修饰符。
这里的大诀窍是从^.*\[\K
开始。这表示将从行首开始的所有内容与\[
匹配。由于这是一个“贪婪”的重复,它将一直持续到最后一个实例(.
与没有s
修饰符的换行符不匹配)。 \K
抛弃了所有匹配的内容,因此我们只更换括号内的内容。
答案 1 :(得分:0)
您可以使用此代码:
$re = "/\\[([^]]*)\\][^]]*$/m";
$str = "content[1]\ncontent[1][officeImage]\ncontent[2][officeImage]\ncontent[3][something][officeImage]";
$subst = "[replacement]";
$result = preg_replace($re, $subst, $str);
答案 2 :(得分:0)
试试这个:
$string = 'content[3][something][officeImage]';
$replaced = 'somestring';
$result = preg_replace('/(.*\[)(.*?)]$/m','$1'.$replaced.']',$string);