使用正则表达式添加img标签周围的链接

时间:2010-06-06 18:01:45

标签: php regex

我想使用preg_replace()添加图像标记周围的链接。

在:

<img href="" src="" alt="" />

后:

<a href="" ..><img href="" src="" alt="" /></a>

我非常感谢任何帮助。非常感谢你。

2 个答案:

答案 0 :(得分:4)

这会有帮助吗?

$str = '<img href="" src="" alt="" />';

preg_replace('/(<img[^>]+>)/', '<a href="" ...>$1</a>', $str));

此外,preg_replace_callback在动态确定<a>代码的实际内容方面为您提供了强大的力量。

编辑:为了防范@Amber指出的缺陷,这种模式应该有所帮助:

'#(<img[^>]+ alt="[^"]*" />)#'

YMMV,具体取决于<img>代码的统一性。是否始终存在alt和最后一个属性,周围有单个空格等。

编辑:Re:将img的src复制到一个href:

preg_replace('#(<img[^>]+ src="([^"]*)" alt="[^"]*" />)#', '<a href="$2" ...>$1</a>', $str)

再次..这是期待原始img标签的一致性。如果它们是由您创建的,那么您可能会很好。如果没有,您将需要防止丢失属性,变化顺序,双重与单引号等。

答案 1 :(得分:0)

接缝时,您试图在点击时提供“更大”的图像版本。如果是这种情况,我会使用javascript。

在这种情况下,该链接与网站的内容和功能无关,仅用于增强用户体验,因此非常适合增强用户体验的javascript类型。

jQuery示例或多或少会像这样(请注意我添加了can-click类以更好地控制要单击的图像):

$(function(){
    // get all images that have 'can-click' class
    $('img.can-click').each(function(){
        // adds the custom cursor pointer to give the user clicking feedback
        $(this).css('cursor', 'pointer');

        // your clicking handle goes here
        $(this).click(function(){
            // you can set up the image on a light-box, to a new tab, etc...
        });

    });
});

此代码尚未经过测试。

希望它有所帮助!