gpt4 book ai didi

php - 如何使用 PHP preg_replace 链接 Twitter 用户名?

转载 作者:可可西里 更新时间:2023-10-31 22:16:11 24 4
gpt4 key购买 nike

我想搜索我的推特状态对象的文本属性并将@username 换成<a href="http:/twitter.com/username">@username</a> .到目前为止我尝试过的是这样的:

$pattern = '/([@]{1})([a-zA-Z0-9\_]+)/';
$replace = '<a href="http://twitter.com/\2">\1\2</a>';
$new_string = preg_replace($pattern, $replace, $text);

但它不做任何替换。我知道我的 reg exp 是错误的,但我无法弄清楚确切的位置/原因。帮忙?

**编辑:...根据要求提供示例数据?

$text = '@janesmith I like that, but my friend @johndoe said it better.';

期望的输出:

@janesmith我喜欢那样,但是我的 friend @johndoe说得更好。

***** MY FULL FUNCTION *****

function linkify($string, $twitter=false) {

// reg exp pattern
$pattern = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";

// convert string URLs to active links
$new_string = preg_replace($pattern, "<a href=\"\\0\">\\0</a>", $string);

if ($twitter) {
$pattern = '/@([a-zA-Z0-9_]+)/';
$replace = '<a href="http://twitter.com/\1">@\1</a>';
$new_string = preg_replace($pattern, $replace, $new_string);
}

return $new_string;
}

最佳答案

为什么 \_ 之前?如果你把 \ 去掉,它会起作用吗?虽然那不应该破坏功能......

\1 更改为 \\1 可能会有所帮助,这样您就可以确定反斜杠已被转义;或更好(自 PHP 4.0.4 起)$1。但同样,它应该在单引号内按原样工作。

此外,您还可以简化:

$pattern = '/@([a-zA-Z0-9_]+)/';
$replace = '<a href="http://twitter.com/$1">@$1</a>';

关于php - 如何使用 PHP preg_replace 链接 Twitter 用户名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4044014/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com