Php preg_replace仅替换部分输入?(正则表达式帮助)
我有这个功能,这是我的网站上的BBCODE使用。我正在使用preg_替换Php preg_replace仅替换部分输入?(正则表达式帮助),php,regex,preg-replace,bbcode,Php,Regex,Preg Replace,Bbcode,我有这个功能,这是我的网站上的BBCODE使用。我正在使用preg_替换 function makebbcode($bbpost) { $bbfind = array( '~\@(.*?)~s' ); $bbreplace = array( '<a href="http://www.google.com">@$1</a>' ); $bbpost = preg_replace($bbfind, $bbr
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;
}
函数makebbcode($bbpost){
$bbfind=数组(
“~\@(.*)s”
);
$bbreplace=数组(
''
);
$bbpost=preg_replace($bbfind,$bbreplace,$bbpost);
//输入代码和图标后,返回。
退回$bbpost;
}
这一点是为了让它成为你可以把@username和它成为一个链接到他们的个人资料。(www.google.com是一个测试示例。)但代码只是将@符号作为链接,而不是整个@用户名
尽管如此,出于某种原因,它似乎完全忽略了(.*)。我肯定我的正则表达式是关闭的,但我不能确切地知道什么是关闭的,而且我在网上找不到任何有帮助的东西。。。或者至少是我能理解的东西。(regex初学者)惰性量词
?
正在尽可能少地匹配单词。在本例中,这意味着0次 尝试删除
?
或者在后面加上一些东西,迫使它与单词匹配
示例:
\@(.*?)$
Ungreedy(.*?
如果后面没有其他内容,则没有多大意义。输入文本的示例是什么?如果建议使用$
锚定,为什么要使用?
?如果最后出现$
,-*?
将始终匹配整个字符串,不管它是否贪婪。如果没有某种锚,它将不匹配任何内容。没错。但是有了$
锚定?
就没用了@(.*)$
regex与@(.*)$
表达式是有效的。你是否认为这没用是你的意见。regex中没有这样的规则。@mega:它被否决了,因为在@(.*?$
正则表达式?
中,量词没有任何意义,他们决定毫无理由地争论,而不是修正它。