用于更改php的锚标记内容的正则表达式

时间:2014-10-15 13:02:52

标签: php regex

我有一个包含锚标签的变量,我需要在<a>标签上str_replace但标签的内容会发生变化。我假设可以使用正则表达式吗?

这是链接的一个例子。

<a href="/url?q=http://www.fandango.com/redirect.aspx%3Ftid%3DAAPOS%26tmid%3D136675%26date%3D2014-10-15%2B14:20%26a%3D11584%26source%3Dgoogle&amp;sa=X&amp;oi=moviesf&amp;ii=0&amp;usg=AFQjCNG2oI9LFx-CeZ61PNCnniNnD1XyAQ" class="fl">

我需要一个表达式来表示<a href="{expression here}" class=fl>

我做了几次尝试,但我不确定从哪里开始,因为有特殊字符,数字,字母等。

如果有人能回答,甚至可能指出哪些部分做了什么,那就太棒了!

谢谢:)

2 个答案:

答案 0 :(得分:1)

你可以尝试一些简单的事情:

<a href="[^"]+" class="fl">

这应该与具有href和class属性的锚标记匹配,其中href属性必须具有值并且可以包含除双引号之外的任何内容。如果您不关心href是否为空,那么Avinash Raj的评论也会起作用:

<a href="[^"]*" class="fl">

如果您需要比此更复杂的内容,请添加您想要排除的更多特定要求或误报,以及要包含的误报。

答案 1 :(得分:0)

使用DOMDocument:

$dom = new DOMDocument();
@$dom->loadHTML($yourhtml);

$linkNodes = $dom->getElementsByTagName('a');

foreach ($linkNodes as $linkNode) {
    if ($linkNode->getAttribute('class') == 'fl')
        $linkNode->setAttribute('href', $whateveryouwant);
}

$yourhtml = $dom->saveHTML();