我现在正在使用preg_replace
创建一个短代码。
$content = preg_replace(
'%\[social-lock]([^[]*)\[/social-lock]%',
$html_str_1. '\1' . $html_str_2 . '<br/>' . $html_js,
$content
);
echo $content;
当我将此短代码应用于HTML内容时,我们会有类似的内容
Below content will be hidden.
[social-lock]
Code Vip: Write something here.
[/social-lock].
浏览器的输出将显示:
Below content will be hidden.
<div class="lock" style="display:none">
Code Vip: Write something here.
</div>
但是如果我在HTML内容中添加括号(在社交锁定之间),就像那样:
Below content will be hidden.
[social-lock]
Code Vip: Write something here. [show the brackets here]
and it will not be hidden.
[/social-lock].
[social-lock] - [/ social-lock]中的内容应该隐藏,但事实并非如此。我认为因为括号[]里面的短代码内容。 但我找不到解决办法。
答案 0 :(得分:2)
它会中断,因为您使用此([^[]*)
表示除[
之外的每个字符在0和无限次之间。所以它停在你的字符串中的[
。
要解决此问题,您可以使用(.*?)
,它表示在0和无限时间之间获取所有内容,但是懒惰。另外,请务必设置标记s
,以便.
也可以匹配新行。