Regex用于更改php的锚标记内容


Regex for anchor tag content that changes php

我有一个包含锚标记的变量,我需要将其str_replace放在<a>标记上,但标记的内容会更改。我假设regex可以用于此?

这是链接的一个示例。

<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>

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

如果有人能回答这个问题,甚至可能指出哪些部分起什么作用,那将是太棒了!

感谢:)

您可以尝试以下简单的方法:

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

它应该按照href和class属性的顺序匹配锚标记,其中href属性必须有一个值,并且可以包含除双引号之外的任何内容。如果你不在乎href是否为空,那么Avinash Raj的评论也会起作用:

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

如果你需要比这更复杂的东西,添加更具体的要求或你想排除的假阳性,你想包括的假阴性。

使用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();