我想提到类似于Twitter的提及但是对于用户配置文件我使用ID而不是userNames所以我创建了一个函数,它根据userName获取UserID,并且在程序代码中工作但是在oop dosent中...
$title = ' Hey @Stackoverflow can u help me ?';
$mentions = (preg_replace("/\@([a-zA-Z0-9\-_]{3,30})/e",
"'<a href=\"http://mySite.com/user:'.$this->mentionName('$1').
'\">@$1</a>'",$title));
预期的网址结果
不是预期的结果
http://mySite.com/user:Stackoverflow
//这是一个循环而不是单个字符串
答案 0 :(得分:1)
你做不到。
查看preg_replace_callback函数,或将匹配分配给另一个变量,并将其用于您的类函数。
答案 1 :(得分:0)
如果您想将preg_replace
与评估结果并修改结果的函数结合使用,请使用preg_replace_callback
http://php.net/manual/en/function.preg-replace-callback.php
function returnUser($matches){
return $this->mentionName($matches[1]);
}
$mentions = preg_replace_callback("/\@([a-zA-Z0-9\-_]{3,30})/e", "returnUser",$title));