我正试图在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;
可能我犯了很多错误 提前致谢
答案 0 :(得分:0)
嗯我用preg_replace_callback
没有那么多工作,但我猜它只有一个匹配,所以你可能会做的是调用一个函数并在该函数中使用preg_replace_callback,所以它循环直到所有内容都被替换,正如php documentations中的第三个例子所见。
这样的事情可能是:
<?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;