0

我正在尝试在 html 中查找内部链接,例如

<p>This is first <a href="/old-link-first">old link</a> and this is second <a href="/old-link-second">old link</a></p>

我必须匹配相对链接在数据库上进行查询才能从数据库中获取链接,我在匹配:/ 和执行时遇到问题。

我试过这个,但它似乎只适用于第一个链接:

$out='<p>This is first <a href="/old-link-first">old link</a> and this is second <a href="/old-link-second">old link</a></p>';

$pattern = '/href="\/(.*)?"/';

function ch($match){
    $oldurl = 'href="'.$match[1].'"';
    // query to database
    return $newurl;
}

$out = preg_replace_callback($pattern, 'ch', $out);
print $out;

可能我有很多错误提前谢谢

4

1 回答 1

0

好吧,我没有做太多的工作,preg_replace_callback但我想它只匹配一个,所以你可能会做的是调用一个函数并在该函数中使用 preg_replace_callback ,所以它循环直到所有内容都被替换,如第三个示例所示在php 文档中。

可能是这样的:

<?PHP
$out='<p>This is first <a href="/old-link-first">old link</a> and this is second <a href="/old-link-second">old link</a></p>';

function ch($match){
    $pattern = '/href="\/(.*)?"/';
    if(is_array($match)){
    $match = 'href="'.$match[1].'"';
    }
    // query to database

    return preg_replace_callback($pattern, 'ch', $match);
}

$out = ch($out);
print $out;
于 2013-09-14T21:05:13.073 回答