我需要找到第一次出现冒号':'并在此之前取完整字符串并将其附加到链接。
e.g。
username: @twitter nice site! RT www.google.com : visited!
需要转换为:
<a href="http://twitter.com/username">username</a>: nice site! RT www.google.com : visited!
我已经有了以下正则表达式,将字符串@twitter转换为可点击的网址:
E.g。
$description = preg_replace("/@(\w+)/", "<a href=\"http://www.twitter.com/\\1\" target=\"_blank\">@\\1</a>", $description);
任何想法:)
答案 0 :(得分:3)
我使用字符串操作,而不是正则表达式,使用strstr
,substr
和strlen
:
$username = strstr($description, ':', true);
$description = '<a href="http://twitter.com/' . $username . '">' . $username . '</a>'
. substr($description, strlen($username));
答案 1 :(得分:1)
$regEx = "/^([^:\s]*)(.*?:)/";
$replacement = "<a href=\"http://www.twitter.com/\1\" target=\"_blank\">\1</a>\2";
答案 2 :(得分:0)
我没有测试过代码,但它应该按原样运行。基本上你也需要在@twitter之后捕获。
$description = preg_replace("%([^:]+): @twitter (.+)%i",
"<a href=\"http://www.twitter.com/\\1\" target=\"_blank\">@\\1</a>: \\2",
$description);
答案 3 :(得分:0)
以下内容应该有效 -
$description = preg_replace("/^(.+?):\s@twitter\s(.+?)$/", "<a href=\"http://www.twitter.com/\\1\" target=\"_blank\">@\\1</a>: \\2", $description);
答案 4 :(得分:0)
直接回答您的问题:
$string = preg_replace('/^(.*?):/', '<a href="http://twitter.com/$1">$1</a>:', $string);
但我认为您正在解析Twitter RSS或类似的东西。所以你可以使用/^(\w+)/
。