我需要一些preg_replace的帮助。在我的网站上,我需要删除一些我不需要的东西 这是一个例子:
[caption id="attachment_100951" align="alignleft" width="448" caption="THIS IS WHAT I NEED"] [/caption]
好的,我从这个字符串中得到的只是:caption="THIS TEXT"
里面的文字,
我需要删除其他所有东西,我已经使用了谷歌并尝试了一些例子,但没有。
也许我需要使用另一个功能,但从我在互联网上阅读的内容中,这应该取代。
请帮助我,这很重要。
谢谢。
编辑:
代码还有一些我忘了的东西。
[caption id="attachment_100951" align="alignleft" width="448" caption="eaaaaaaaaaaaaaaaaaa"]
<a href="http://localhost/111baneease1.jpg">
<img class="size-full wp-image-100951" title="zjarr_banese1" src="http://localhost/111baneease1.jpg" alt="eeeeeeeeeeeeeeeee" width="448" height="308" />
</a>
[/caption]
所以我需要获取 CAPTION文本并删除其中的所有内容 [caption id =“attachment_100951”align =“alignleft”width =“448”caption =“eaaaaaaaaaaaaaaaaa”]
但不是
<a href="http://localhost/111baneease1.jpg">
<img class="size-full wp-image-100951" title="zjarr_banese1" src="http://localhost/111baneease1.jpg" alt="eeeeeeeeeeeeeeeee" width="448" height="308" />
</a>
也想要删除[/ caption]
太
答案 0 :(得分:3)
这个正则表达式:
$result = preg_replace('/\[caption\s+.*?caption\s*=(["\'])(.*?)\1.*?\[\/caption\]/', '$2', $subject);
将输出:
THIS IS WHAT I NEED
适用于:
[caption id="attachment_100951" align="alignleft" width="448" caption="THIS IS WHAT I NEED"] [/caption]
根据您更新的问题更新了答案:
$result = preg_replace('%\[caption\s+.*?caption\s*=(["\'])(.*?)\1\s*\](.*?)\[/caption\]%s', '$2\n$3', $subject);
上述正则表达式适用于:
[caption id="attachment_100951" align="alignleft" width="448" caption="eaaaaaaaaaaaaaaaaaa"]
<a href="http://localhost/111baneease1.jpg">
<img class="size-full wp-image-100951" title="zjarr_banese1" src="http://localhost/111baneease1.jpg" alt="eeeeeeeeeeeeeeeee" width="448" height="308" />
</a>
[/caption]
将输出:
eaaaaaaaaaaaaaaaaaa
<a href="http://localhost/111baneease1.jpg">
<img class="size-full wp-image-100951" title="zjarr_banese1" src="http://localhost/111baneease1.jpg" alt="eeeeeeeeeeeeeeeee" width="448" height="308" />
</a>
我不确定这是不是你想要的。当然,您可以使用正则表达式匹配,并为组$ 2和$ 3 ...
做任何您想做的事情