【发布时间】:2011-11-26 12:11:45
【问题描述】:
我有以下字符串:
OPEN有人打招呼CLOSE我打招呼的人OPEN有人说 你好OPEN他们又打招呼了CLOSE我现在得走了虽然CLOSE你好!
我正在尝试匹配所有出现的 hello(未包含在 OPEN 和 CLOSE 词中)并将它们替换为另一个词,可能带有正则表达式和 PHP 的 preg_replace 函数(尽管我对其他方法持开放态度,因为我想不出任何方法)。
所以从上面的字符串中,下面会匹配(我用斜体将它们放在括号中以帮助您区分):
打开有人说你好CLOSE我说(你好)人打开有人说 你好OPEN他们又打招呼了CLOSE我现在得走了,虽然CLOSE(hello)又来了!
不知道该怎么做。
编辑也许这会更好地阐明嵌套结构:
OPEN
text
CLOSE
OPEN
text
OPEN
text
CLOSE
text
CLOSE
正如您从上面看到的,hello 没有被注意到,因为它在 OPEN...CLOSE(因此它们被忽略)内,而其他没有被替换。
【问题讨论】:
-
如果在您的示例中最后一个 CLOSE 之前有一个“hello”,您是否希望它匹配?
-
为什么
OPENOPEN里面的那个没变?如果这是一个错误,那么我找到了一种方法来执行此操作,如果不是,我需要了解更改脚本的原因。
标签: php regex preg-replace preg-replace-callback