preg_replace只替换部分输入? (正则表达式帮助)

时间:2014-05-19 01:38:44

标签: php regex preg-replace bbcode

我有这个功能,用于我网站上的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。

话虽如此,由于某种原因,它看起来完全无视(。*?)。我确定我的正则表达式已关闭,但我无法弄清楚究竟什么是关闭的,我无法在网上找到任何有助于......或者至少我能理解的东西。 (正则表达式初学者)

1 个答案:

答案 0 :(得分:-3)

懒惰量词?尽可能少地匹配单词 在这种情况下,这意味着 0次

尝试删除?
或者在它之后添加一些强制它匹配单词的东西,

示例:\@(.*?)$