虽然您已经回答了问题,但我邀请您看看(大约 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;
这样做的好处是:
- 更有条理/更清洁
- 更容易被其他人阅读
- 例如,您可能有混合链接,而您只想修改其中的一些。使用 Dom 你实际上只能选择某些类
- 您也可以更改其他属性,或所选标签的兄弟姐妹、父母、孩子等...
当然,您也可以使用正则表达式达到最后两点,但这将是一团糟......