Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Preg_替换和自定义标记_Php_Frameworks_Content Management System_Preg Replace - Fatal编程技术网

Php Preg_替换和自定义标记

Php Preg_替换和自定义标记,php,frameworks,content-management-system,preg-replace,Php,Frameworks,Content Management System,Preg Replace,我已经创建了一个自定义标记,在呈现页面之前需要去掉并替换它。标记看起来如下:[@customtagtobereplace] 我使用的preg_replace模式在php中如下所示: $pattern = "/\[@ .*\]/is"; 当我实现它时,有时或多或少的字符被剥离,留下一半的html标记被破坏。像这样: 之前: <div class=""> [@ error] </div> [@错误] 之后: <div class="</div> 您

我已经创建了一个自定义标记,在呈现页面之前需要去掉并替换它。标记看起来如下:[@customtagtobereplace]

我使用的preg_replace模式在php中如下所示:

$pattern = "/\[@ .*\]/is";
当我实现它时,有时或多或少的字符被剥离,留下一半的html标记被破坏。像这样:

之前:

<div class="">
[@ error]
</div>

[@错误]
之后:

<div class="</div>

您的模式太贪婪,请尝试更具体的方法:

$pattern = "/\[@ \w+\]/is";

\w
匹配任何单词字符(字母数字和下划线)。

它可以工作!谢谢你的提示。只是好奇,你知道正则表达式的好资源吗?我建议你读一读《掌握正则表达式》,这真是一本好书(相当大)。还有一个我非常喜欢的在线资源()。