2

[tag]blabla[/tag]

我想将其替换为:

<tag>blabla</tag>

[tag]但是,如果和之间有一个短语“leavemealone”,则保持不变[/tag]

so [tag]leavemealone[/tag]or [tag]aaa leavemealone[/tag]or [tag]aaa leavemealone aaa[/tag]etc. 应该保持不变。

代码:

preg_replace("#\[tag\](what_should_be_here)\[\/tag\]#", "<tag>$1</tag>", $text);
4

1 回答 1

4

使用以下模式。

$match = "#\[(\w+)\](?!.*leavemealone.*)(.*?)\[/(\w+)\]#";
$replace = "<$1>$2</$3>";

那应该这样做。如果你不想匹配任何标签,而只是一个“ tag”标签,你可以像这样修复它:

$match = "#\[tag\](?!.*leavemealone.*)(.*?)\[/tag\]#";
$replace = "<tag>$1</tag>";
于 2013-01-01T23:03:36.720 回答