我目前正在制作一个用于存档图像板的脚本。 我有点坚持正确地引用链接,所以我可以使用一些帮助。
我收到这个字符串:
<a href="10028949#p10028949" class="quotelink">>>10028949</a><br><br>who that guy???
在上述字符串中,我需要改变这一部分:
<a href="10028949#p10028949"
成为这个:
<a href="#p10028949"
使用PHP。
此部分可能会在字符串中出现多次,或者可能根本不出现。 如果你有一个我可以用于此目的的代码片段,我真的很感激。
提前致谢! 肯尼
答案 0 :(得分:0)
免责声明:正如评论中所说,使用DOM解析器更好地解析HTML。
话虽如此:
"/(<a[^>]*?href=")\d+(#[^"]+")/"
替换为$1$2
因此...
$myString = preg_replace("/(<a[^>]*?href=\")\d+(#[^\"]+\")/", "$1$2", $myString);
答案 1 :(得分:0)
试试这个
<a href="<?php echo strstr($str, '#')?>" class="quotelink">>>10028949</a><br><br>who that guy???
答案 2 :(得分:0)
虽然你已经回答了这个问题,但我邀请你看看(大约xD)是正确的方法,用DOM解析它:
$string = '<a href="10028949#p10028949" class="quotelink">>>10028949</a><br><br>who that guy???';
$dom = new DOMDocument();
$dom->loadHTML($string);
$links = $dom->getElementsByTagName('a'); // This stores all the links in an array (actually a nodeList Object)
foreach($links as $link){
$href = $link->getAttribute('href'); //getting the href
$cut = strpos($href, '#');
$new_href = substr($href, $cut); //cutting the string by the #
$link->setAttribute('href', $new_href); //setting the good href
}
$body = $dom->getElementsByTagName('body')->item(0); //selecting everything
$output = $dom->saveHTML($body); //passing it into a string
echo $output;
这样做的好处是:
当然你也可以用正则表达式获得最后2分,但这将是一个完整的混乱......