好的,所以这与之前的问题有关。我对PHP一般都很陌生,只需要修复别人为我的论坛工作的东西。
这就是我目前所拥有的:
// Alter post output to create links to user profiles
$post->message = preg_replace(
'/@ *('.preg_quote($speak['username'], '/').')[:,.]? */i',
'[url=\''.PAGE_URL.RELATIVE_WBB_DIR.'/index.php?'
. 'page=User&userID='.$speak['toID'].'\']@'.$ speak['username'].':[/url]',
$post->message);
这应该改变:
@JamesNorris, @JamesNorris: @JamesNorris
到用户个人资料链接,确实如此。唯一的问题是它做出的另一个改变是:
@JamesNorris:@JamesNorris:@JamesNorris:
这是之前给出的那一行的输出。 显然它正在删除','和空格,并放置':'。
有没有人对如何解决这个问题有任何想法?
答案 0 :(得分:2)
您可以将,:.
捕获为自己的组,并在替换中引用该组:
('preg_quote(...)')([:,. ])? */i',
'[url...'.$speak['username'].'\2[/url]'
\2
是第二组中捕获的内容(冒号,逗号,句号,空格)。它是\2
,因为您已经有另一个用户名捕获组(您不使用)。