preg_replace也删除空格

时间:2012-02-15 17:50:04

标签: php regex preg-replace

我正在使用此代码来使用“标记”系统,例如Twitter有:@username,它将链接到他们的个人资料

preg_replace("/@(\w+)/", '<a href="http://www.buddyweb.me/profile/?username=$1">@$1</a>', ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<a href=\"http://assets.buddyweb.me/scripts/run_link.php?url=\\0\" target=\"_blank\" class = \"user_created_link\" title = \"External Link\">\\0</a>", $original));

它可以找到,但如果彼此相邻,例如:

@someone @else

它会将它们链接到配置文件,但它会删除它们之间的空格,例如:

@someone@else

我知道这很简单,但我不熟悉PHP所以我真的不知道要删除什么,我已经尝试从上面的代码中删除/但是这会破坏整个事情

修改

我已发布完整代码。

2 个答案:

答案 0 :(得分:0)

我认为你可以在锚标记之后添加一个空格:

preg_replace("/@(\w+)/", '<a href="http://www.buddyweb.me/profile/?username=$1">@$1</a> ',$string)

答案 1 :(得分:0)

奇怪的是它确实链接了所有@usernames,因为你没有在正则表达式的末尾指定 g 修饰符。 g修饰符将替换所有出现的事件。 Lbu的答案实际上应该是增加1个额外空间,这样 最终会有2个空格。

preg_replace("/@(\w+)/g", '<a href="http://www.buddyweb.me/profile/?username=$1">@$1</a>',$string)

一个值得练习的好网站是http://gskinner.com/RegExr/祝你好运!:)