[英]Regex to match and replace string
我想匹配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>
我怎样才能做到这一点? 寻求答案
$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
您将为此使用preg_replace
。 由于有了正则表达式,您只需要构造一个$ replacement模式。 在其中使用$1
, $2
和$3
占位符,其中每个占位符对应一个(...)
捕获组。
$text = preg_replace(YOUR_REGEX, "$1<a href=$2>:)$2</a>$3", $text);
您的正则表达式不是很聪明,但是可以使用它。 当然,您也可以为href=
添加基本URL /前缀。
如果确实需要以某种方式将twitter名称转换为更复杂的URL,那么您可能想要使用preg_replace_callback
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.