[tag]blabla[/tag]
我想将其替换为:
<tag>blabla</tag>
但如果[tag]
和[/tag]
之间有一个短语“leavemealone”,请保持不变。
因此[tag]leavemealone[/tag]
或[tag]aaa leavemealone[/tag]
或[tag]aaa leavemealone aaa[/tag]
等应保持不变。
代码:
preg_replace("#\[tag\](what_should_be_here)\[\/tag\]#", "<tag>$1</tag>", $text);
答案 0 :(得分:4)
使用以下模式。
$match = "#\[(\w+)\](?!.*leavemealone.*)(.*?)\[/(\w+)\]#";
$replace = "<$1>$2</$3>";
那应该这样做。如果您不想匹配任何代码,只需匹配“tag
”代码,则可以像这样修复:
$match = "#\[tag\](?!.*leavemealone.*)(.*?)\[/tag\]#";
$replace = "<tag>$1</tag>";