preg_replace怎么做?

时间:2012-02-08 09:07:09

标签: php

所以我遇到了一个问题。我有一个代码 -

[caption id="attachment222" align="aligncenter" width="520" caption="caption ghoes here"]<img class="image-caption" title="title" src="picture link goes here" alt="" width="520" height="328" />[/caption]

基本上我需要做的就是浏览$ content,获取[caption] [/ caption]标签内的每个<img> src,有关详细信息,请参阅上面的代码,然后插入src链接在标题内部并删除img标记,最后它看起来像[caption id="attachment222" align="aligncenter" width="520" caption="caption ghoes here" url="picture link goes here"][/caption]

如您所见,src也被更改为url。希望你能帮助我。

3 个答案:

答案 0 :(得分:1)

这不准确,但会指出你正确的方向。

使用像这样的正则表达式可以做两件事情来获取你的标题数据和你的图像src

[caption (.*)]<img class="image-caption" title="title" src="(.*)" alt="" width="520" height="328" />[/caption]

然后你在preg_replace中使用它。

[caption $1 src="$2"][/caption]

$ 1是标题中(。)的内容,$ 2是图像src。如果[img]标签中的标题和其他属性是动态的,那么只需在reg表达中用。替换它们就像这样。

[caption (.*)]<img class=".*" title=".*" src="(.*)" alt=".*" width=".*" height=".*" />[/caption]

那应该有用。 (我吮吸正则表达式,所以可能有一种更优雅的方式)。

答案 1 :(得分:0)

你的正则表达式可能类似于#<img.*?/>#i。我会让你弄明白其余的。

答案 2 :(得分:0)

这应该有效:

$parsed = preg_replace(
    '{\[caption([^\]]+)\]<img.*?src=["\'](.*?)["\'].*?/>}mi',
    '[caption$1 url="$2"]',
    $sourceText
);