用链接包裹所有图像标签

时间:2012-01-15 16:39:01

标签: php

尝试自动将所有图像标记包装在当前使用CKEditor管理的字段中。真的很想用PHP来处理它。

所以这将是一个字段随机内容的一个例子:

<p>
    Intro text here<br />
    <img alt="sample desc" src="/images/example1.jpg" />
    Long article text here...
    <img alt="sample desc" src="/images/example2.jpg" />
    Short article text here...
    <img alt="sample desc" src="/images/example3.jpg" />
</p>

我需要将上面的代码更改为此内容,使用唯一ID包含每个图像标记的链接,href匹配img的源代码和标题匹配替代文字:

<p>
    Intro text here<br />
    <a id="image1" href="/images/example1.jpg" title="sample desc">
       <img alt="sample desc" src="/images/example1.jpg" />
    </a>
    Long article text here...
    <a id="image2" href="/images/example2.jpg" title="sample desc">
       <img alt="sample desc" src="/images/example2.jpg" />
    </a>
    Short article text here...
    <a id="image3" href="/images/example3.jpg" title="sample desc">
       <img alt="sample desc" src="/images/example3.jpg" />
    </a>
</p>

感谢您提供的任何帮助!

2 个答案:

答案 0 :(得分:2)

如果它是来自外部来源的任意HTML,那么它最简单,例如

$html = htmlqp($html);
foreach ($html->find("img") as $img) {
    $img->wrap("<a href='{$img->attr('src')}'></a>");
}
print $html->top("p")->html();

您可能希望在循环中同样注入id=title=,但这就是它。

答案 1 :(得分:0)

给p..lets说一个id,告诉main_p以便选择它。或者你可以选择任何其他选择器..

$(document).ready(function() {
    var i=1;
        $("#main_p img").each(function(){
$(this).wrap('<a id=image'+i+++' href='+$(this).attr("src")+' title="sample desc"/>');
})
});

这将成为你所写的第二个代码。

Live Demo