2

嗨,我对编程很陌生。我不知道如何编写一个 php regulat 表达式来在 href=" 和之后的一些文本之间添加一些东西如何做到这一点

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

看起来像

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

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

有谁能够帮我 ?

4

2 回答 2

2

你最好不要开始尝试用正则表达式来做这件事。

对于这样的任务,您应该使用 DOM 解析器。例如,这使您的生活变得非常轻松。

$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 模块。代码不会那么短和优雅,但它仍然比尝试提出一个健壮的正则表达式更可取。

于 2012-12-13T23:00:37.767 回答
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 方式。

于 2012-12-13T23:03:05.980 回答