gpt4 book ai didi

php - 自动链接功能无法正常工作

转载 作者:行者123 更新时间:2023-12-02 05:39:28 24 4
gpt4 key购买 nike

我创建了一个 PHP 函数,可以自动将 URL 转换为链接,链接 Twitter @reply将用户名添加到其 Twitter 个人资料,并将电子邮件地址转换为与 mailto 的链接协议(protocol)。

这是脚本:

function autolink($a, $b){
$e = "";
$f = array(
'link' => '~(http(s|)\:\/\/(www\.|)((\w+)\.(\w+)(\:[0-9]{2,5}|)\.[a-z]{2,5}|(\w+)(\:[0-9]{2,5}|)\.[a-z]{2,5}))((((\/|)\w+)(\.[a-z]{2,5}|))+)(\?(\w+\=\w+(\&|))+|)~',
'email' => '~\w+\@\w+(\:[0-9]{2,5}|)\.[a-z]{2,5}~',
'twitter' => '~\@([a-zA-Z_0-9]){1,15}~'
);
switch ($b) {
case "link":$e = preg_replace_callback($f['link'], function ($a) {return '<a href="'.$a.'" rel="nofollow" target="_blank">'.$a.'</a>';},$a);break;
case "email":$e = preg_replace_callback($f['email'], function ($a) {return '<a href="mailto:'.$a.'" rel="nofollow" target="_blank">'.$a.'</a>';},$a);break;
case "twitter":$e = preg_replace_callback($f['twitter'], function ($a) {return '<a href="https://twitter.com/#!/'.str_replace('@','',$a).'" rel="nofollow" target="_blank">'.$a.'</a>';},$a);break;
}
return $e;
}

我遇到的唯一问题是,它没有返回链接,而是返回了单词:“Array”。

例如,这个:

autolink("This is my site http://weebuild.biz", "link");

正在返回:

This is my site Array

什么时候应该返回这个:

This is my site <a href="http://weebuild.biz" rel="nofollow"
target="_blank">http://weebuild.biz</a>

原始脚本是用我也写的 JavaSript 编写的:http://jsfiddle.net/shawn31313/umgqR/2/

由于我不是 PHP 开发人员,JavaScript 版本具有更多功能。

也许问题在于我从 JavaScript 中获取正则表达式并将其放入 PHP 中。我不确定 PHP 中的正则表达式是否与 JavaScript 不同。

提前致谢。

最佳答案

尝试以下更改:

case "link":$e = preg_replace_callback(
$f['link'],
function ($a) {
return '<a href="'.$a[0].'" rel="nofollow" target="_blank">'.$a[0].'</a>';
},
$a
);
break;

问题是回调的参数将是一个数组,而不是一个字符串。

来自docs :

A callback that will be called and passed an array of matched elements in the subject string. The callback should return the replacement string.

关于php - 自动链接功能无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11202332/

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