Preg_replace无法取代我需要的东西

时间:2011-10-15 20:17:29

标签: php preg-replace

我需要一些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]

1 个答案:

答案 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 ...

做任何您想做的事情