如何在PHP中删除自定义标签?
我想从字符串中删除以下标记。如何在PHP中删除自定义标签?
[caption id="attachment_9" align="alignleft" width="137" caption="test"][/caption]
如何使用php的preg_replace删除它?
我尝试了几个正则表达式,但都失败了。
$output_string = preg_replace('#\[caption[^\]]*\](.*?)\[/caption\]#m', "$1", $input_string)
,或者如果你也想删除的打开和关闭标签之间的任何东西,只是改变"$1"
到""
。
给你:
这里测试:http://www.pagecolumn.com/tool/pregtest.htm
<?php
$ptn = "/\[caption.+caption\]/";
$str = "Otherstuff[caption id=\"attachment_9\" align=\"alignleft\" width=\"137\" caption=\"test\"][/caption]Something else";
$rpltxt = "@";
echo preg_replace($ptn, $rpltxt, $str);
?>
-1这有两个主要问题。 1.因为你没有检查贪婪的条件而失败。 “你好[标题] [/标题]不在标题[标题] [/标题]世界”将被取代“helloworld”。 2.这不适用于跨越多行的字幕集。 “[caption] \ n [/ caption]”会失败。“作为另一个说明,您有一个未经转义的“内$ str,这意味着代码将不会运行。 – 2010-07-09 03:08:03
我更正了项目2.一个疏忽,同时快速发布从该链接生成的代码关于项目1,你是绝对正确的。问题没有提供多少内容,我找到了一个快速解决方案,琥珀有更好的解决方案。 – mikegreenberg 2010-07-09 04:31:37
你想用的ID删除所有[字幕] [/字幕]套,或者只是那些,对齐,宽度和字幕组? – 2010-07-09 02:40:32
@Jamie Wong //我想删除所有标题集。 – Moon 2010-07-09 02:59:17