我想如何替换表单名称的最后一项,如下所示:
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]
”:[
最佳答案
preg_replace('~^.*\[\K[^]]+~m', 'replaced', $parent);
仅当 $parent
包含需要一次替换的多行时,才需要 m
(多行)修饰符。
这里的大技巧是从 ^.*\[\K
开始。这表示匹配从行开头到 \[
的所有内容。由于这是一个“贪婪”的重复,它将一直持续到最后一个实例(.
不匹配没有 s
修饰符的换行符)。 \K
会丢弃所有匹配的内容,因此我们只替换括号内的内容。
关于PHP:替换字符串最后一个括号中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39532716/