php正则表达式添加到href的链接

时间:2012-12-13 22:57:15

标签: php regex html-parsing

嗨,我非常擅长编程。 我不知道如何写一个PHP规则表达式来添加href =“和之后的一些文本之间的东西 怎么做这个

<a class="aaa" href="/some/file.html">

看起来像

<a class="aaa" href="http://www.example.com/some/file.html">

必须将链接与“aaa”类匹配。

有人能帮助我吗?

2 个答案:

答案 0 :(得分:2)

You better don't even start trying to do this with regular expressions.

你应该使用DOM解析器来完成这样的任务。 This one例如让您的生活变得轻松。

$html = new simple_html_dom();
$html->load($input);

foreach($html->find('a[class=aaa]') as $link)
    $link->href = "http://www.example.com".$link->href;

$result = $html->save();

find可让您非常好地查询DOM。参数为tagtype[attributeName=attributeValue],其中方括号是可选的过滤器。然后,您只需迭代此函数找到的每个链接,并在您的域前添加href属性。

如果由于某种原因无法使用第三方库,PHP会附带内置DOM module。代码不会那么短而优雅,但仍然非常希望能够提出一个强大的正则表达式。

答案 1 :(得分:0)

你可以这样做:

$string = '<a class="aaa" href="/some/file.html">';
$pattern = '~class="aaa" href="(.*)"~isU'; 
preg_match($pattern, $string, $matches);

$string = str_replace($matches[1],"http://www.example.com".$matches[1],$string);

echo $string;

编辑匹配class =“aaa”,但如果你做的很多,我也会推荐m.buettners方式。