繁体   English   中英

正则表达式匹配和替换字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM