PHP:替换字符串最后一个括号中的文本

标签 php regex

我想如何替换表单名称的最后一项,如下所示:

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]”:[

最佳答案

Try this:

preg_replace('~^.*\[\K[^]]+~m', 'replaced', $parent);

仅当 $parent 包含需要一次替换的多行时,才需要 m(多行)修饰符。

这里的大技巧是从 ^.*\[\K 开始。这表示匹配从行开头到 \[ 的所有内容。由于这是一个“贪婪”的重复,它将一直持续到最后一个实例(. 不匹配没有 s 修饰符的换行符)。 \K 会丢弃所有匹配的内容,因此我们只替换括号内的内容。

关于PHP:替换字符串最后一个括号中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39532716/

相关文章:

php - <<<EOD 在 PHP 中有什么用?

php - 有没有一种设置许多对象属性的简写方法?

c++ - 使用 C++ 解析 robots.txt 文件

php - 循环遍历单行的列

php - 更新生产服务器上的数据库结构的最佳方法?

php - 我怎样才能编写这段代码来实现相同的结果,但只使用一个 foreach 语句?

javascript - 匹配正则表达式中字符串开头或中间的特定单词

java - 典型用户名和密码的正则表达式

java - 需要正则表达式帮助

php - 使用 PHP 如何找到 CSS 标签/id/类并替换大括号内的样式?