2012-02-15 119 views
0

我使用此代码使用一个“标签”系统,类似Twitter的:@用户名,它会连接起来,他们的个人资料的preg_replace去掉空格太

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

将它们连接起来,配置文件,但它消除它们之间的空间,如:

@[email protected]

我知道这件事情很容易,但我有点新的PHP的,所以我就真的不知道怎么删除,我试着从上面的代码去除/的但破坏了整个事情

编辑

我已经发表完整的代码。

+0

如果不删除这些空间对我来说... – 2012-02-15 17:54:44

+0

我不认为这个问题是在正则表达式,可能有一些与输出部分。 – iDifferent 2012-02-15 18:01:57

+0

我已经发布完整的代码。 – Frank 2012-02-15 18:13:12

回答

0

我想你可以锚标记后添加一个空格:在正规的结束

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

我已经发布完整的代码。 – Frank 2012-02-15 18:13:36

0

很奇怪,它并连接所有@使用者名称,因为你没有指定修改表达。 g修饰符将取代所有的出现。 Lbu的回答实际上应该增加1个额外的空间,所以你应该结束了2个空格。

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

一个伟大的网站与实践为http://gskinner.com/RegExr/祝你好运!:)

+0

我已经发布完整的代码。 – Frank 2012-02-15 18:13:26

+0

@Rez,PCRE不理解'g'修饰符。你可能需要把你的'error_reporting'值加起来。当您使用此代码时,PHP应该为您发出警告。 – Charles 2012-02-15 19:23:36