我有一个文本,其中包含用@符号前缀的用户名。例如:如何使用preg_replace并获取匹配?
One day @john decided to ask @jane out.
我想用一个链接来代替用户名的所有出现,对于一个示例的原因可以说,我想用链路用户更换@user,例如:
One day link-john decided to ask link-jane out.
这可以用下面的命令来完成:
preg_replace('`@([a-zA-Z0-9]{2,15})`', 'link-$1', $text);
此外,我想获得会做类似的preg_match所有匹配的数组,但我不能,因为的preg_replace似乎并不提供该数组。什么是最有效的方法来完成这一点?我觉得自己在做preg_match,后来preg_replace会浪费资源,不是吗?
如果您觉得有更好的方法来实现这一点,我将不胜感激您的反馈。
谢谢!
没有,有没有更好的选择。您可以使用'preg_replace_callback'来替换和组装回调中的匹配项。但是这并不符合“更好”的要求。 - 关于资源,在分析后总是优化*。 – mario 2012-01-14 18:07:05