【问题标题】:How to add in every link (a href) tag a rel attribute with the help of php? [closed]如何在php的帮助下在每个链接(a href)标签中添加一个rel属性? [关闭]
【发布时间】:2013-12-24 15:19:54
【问题描述】:

我有一个变量 $mydata(我的代码在 php 中),其中包括文本和一些图片。包含的每张图片都采用这种形式:

<img src="mypicture.jpg" alt="lala" title="lala" border="0" />

这个变量 $mydata 之后有文本和图像被插入到我的数据库(mysql)中。

我想要做的是,通过某种方式将每个链接图像添加到 a href 标记中,在 img 标记之前,再添加一个属性,这是 rel="lightbox" 以便灯箱效果应用于我的所有图像,例如:

<a href="mypicture_fullsize.jpg" rel="lightbox"><img src="mypicture.jpg" rel="lightbox" alt="lala" title="lala" border="0" /></a>

如何在php中制作这个,你能帮我吗?

我想我们可能必须使用某种正则表达式来实现它,但是我对正则表达式的了解并不那么先进..你能帮帮我吗?

【问题讨论】:

标签: php mysql regex image tags


【解决方案1】:
$pat = <<<pattern
~(<a href="[^"]+")(><img src="[^"]+" alt="[^"]+" title="[^"]+" border="[^"]+" /></a>)~
pattern;
$html = preg_replace($pat, "\\1 rel=\"lightbox\"\\2", $html);

【讨论】:

  • 对不起...我犯了一个错误,我想将 rel="lightbox" 添加到 标记中,但 img 标记已超出 那么如何在href上应用呢?
  • @anny32 查看更新后的答案。
  • 你的两个答案都是正确的谢谢你们俩Sharanya Dutta 和Michael Livach 非常感谢我解决我的问题,再次感谢!!
  • @anny32 不客气。
【解决方案2】:

如果$mydata中的所有图片都没有“rel”属性,那么解决方法很简单

$mydata = str_replace('<img ', '<img rel="lightbox"', $mydata);

其他情况,只有当属性值中没有出现“>”字符时,这段代码才有效

function rel_adder( $matches ) {
    if ( strpos($matches[0], 'rel=') === false ) {
        return $matches[1].'rel="lightbox" '. $matches[2];
    } else {
        return $matches[0];
    }
}
$mydata = preg_replace_callback('#(<img )([^>]+)>#i', "rel_adder", $mydata);

【讨论】:

  • 您的两个回答都正确谢谢你们俩Sharanya Dutta 和Michael Livach 非常感谢您帮助我解决我的问题,再次感谢!
猜你喜欢
  • 2013-03-05
  • 2018-02-17
  • 1970-01-01
  • 1970-01-01
  • 2017-02-24
  • 1970-01-01
  • 2011-10-02
  • 1970-01-01
  • 2011-07-09
相关资源
最近更新 更多