我想匹配twitter用户名并将其替换为字符串。这是PHP
这是我的正则表达式
/(^|[^a-z0-9_])[@@]([a-z0-9_]{1,20})([@@\xC0-\xD6\xD8-\xF6\xF8-\xFF]?)/iu
我有一个像
这样的字符串RT @omglol I am hungry @lolomg bla
我想用html标签替换每个用户名,例如
<a href="http://lol.com">@omglol</a>
我该怎么做?获得答案
答案 0 :(得分:4)
$s = "RT @omglol I am hungry @lolomg bla";
$p = "/(@\w+)/";
$r = '<a href="http://lol.com">$1</a>';
print preg_replace($p, $r, $s);
=> RT <a href="http://lol.com">@omglol</a> I am hungry <a href="http://lol.com">@lolomg</a> bla
答案 1 :(得分:2)
您可以使用preg_replace
。由于你有正则表达式,你只需要构造一个$替换模式。在其中使用$1
和$2
以及$3
占位符,其中每个占位符都与(...)
捕获组相对应。
$text = preg_replace(YOUR_REGEX, "$1<a href=$2>:)$2</a>$3", $text);
你的正则表达式不是很聪明,但也可能适用。您也可以为href=
添加基本URL /前缀。
如果您确实需要以某种方式将推特名称转换为更复杂的网址,那么您可能希望改为使用preg_replace_callback
。