最近我一直在学习正则表达式(更准确地说是实践),并且我正在注意到它的强大之处。我提出了这个需求(链接),我知道'backreference'。我认为我理解它的工作原理,在JavaScript中可以使用,但在PHP中不行。
例如,我有这个字符串:
[b]Text B[/b]
[i]Text I[/i]
[u]Text U[/u]
[s]Text S[/s]
并使用以下正则表达式:
\[(b|i|u|s)\]\s*(.*?)\s*\[\/\1\]
在regex101.com上测试是有效的,JavaScript也一样,但是在PHP中不起作用。
preg_replace
的示例(不起作用):
echo preg_replace(
"/\[(b|i|u|s)\]\s*(.*?)\s*\[\/\1\]/i",
"<$1>$2</$1>",
"[b]Text[/b]"
);
虽然这种方法可行:
echo preg_replace(
"/\[(b|i|u|s)\]\s*(.*?)\s*\[\/(b|i|u|s)\]/i",
"<$1>$2</$1>",
"[b]Text[/b]"
);
我不明白我的错误在哪里,感谢所有帮助过我的人。
/
和~
之间的区别吗? - mikelplhts