我有这个功能,用于我网站上的BBcodes。我正在使用preg_replace。
function makebbcode($bbpost) {
$bbfind = array(
'~\@(.*?)~s'
);
$bbreplace = array(
'<a href="http://www.google.com">@$1</a>'
);
$bbpost = preg_replace($bbfind, $bbreplace, $bbpost);
//Once BBcodes and icons are put in, return.
return $bbpost;
}
这样做是为了让你可以放@username,它就成了他们个人资料的链接。 (www.google.com是一个测试示例。)但是代码只是将@符号作为链接,而不是整个@username。
话虽如此,由于某种原因,它看起来完全无视(。*?)。我确定我的正则表达式已关闭,但我无法弄清楚究竟什么是关闭的,我无法在网上找到任何有助于......或者至少我能理解的东西。 (正则表达式初学者)
答案 0 :(得分:-3)
懒惰量词?
尽可能少地匹配单词
在这种情况下,这意味着 0次。
尝试删除?
或者在它之后添加一些强制它匹配单词的东西,
示例:\@(.*?)$