我正在使用此代码来使用“标记”系统,例如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所以我真的不知道要删除什么,我已经尝试从上面的代码中删除/
但是这会破坏整个事情
修改
我已发布完整代码。
答案 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/祝你好运!:)