我想使用preg_replace()添加图像标记周围的链接。
在:
<img href="" src="" alt="" />
后:
<a href="" ..><img href="" src="" alt="" /></a>
我非常感谢任何帮助。非常感谢你。
答案 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...
});
});
});
此代码尚未经过测试。
希望它有所帮助!