gpt4 book ai didi

php - 在 PHP 中将纯文本 URL 转换为 HTML 超链接

转载 作者:IT老高 更新时间:2023-10-28 12:10:21 26 4
gpt4 key购买 nike

我有一个简单的评论系统,人们可以在其中在纯文本字段中提交超链接。当我将这些记录从数据库显示到网页中时,我可以使用 PHP 中的什么 RegExp 将这些链接转换为 HTML 类型的 anchor 链接?

我不希望算法使用任何其他类型的链接来执行此操作,只需 http 和 https。

最佳答案

这是另一种解决方案,这将捕获所有 http/https/www 并转换为可点击的链接。

$url = '~(?:(https?)://([^\s<]+)|(www\.[^\s<]+?\.[^\s<]+))(?<![\.,:])~i'; 
$string = preg_replace($url, '<a href="$0" target="_blank" title="$0">$0</a>', $string);
echo $string;

或者只捕获 http/https 然后使用下面的代码。

$url = '/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/';   
$string= preg_replace($url, '<a href="$0" target="_blank" title="$0">$0</a>', $string);
echo $string;

编辑:下面的脚本将捕获所有 URL 类型并将它们转换为可点击的链接。

$url = '@(http)?(s)?(://)?(([a-zA-Z])([-\w]+\.)+([^\s\.]+[^\s]*)+[^,.\s])@';
$string = preg_replace($url, '<a href="http$2://$4" target="_blank" title="$0">$0</a>', $string);
echo $string;

新的更新,如果你让字符串去掉 (s) 然后使用下面的代码块,感谢@AndrewEllis 指出这一点。

$url = '@(http(s)?)?(://)?(([a-zA-Z])([-\w]+\.)+([^\s\.]+[^\s]*)+[^,.\s])@';
$string = preg_replace($url, '<a href="http$2://$4" target="_blank" title="$0">$0</a>', $string);
echo $string;

这里有一个非常简单的 URL 显示不正确的解决方案。

$email = '<a href="mailto:email@email.com">email@email.com</a>';
$string = $email;
echo $string;

这是一个非常简单的修复方法,但您必须根据自己的目的对其进行修改。

由于某些服务器的设置不同,我提供了多个答案,因此一个答案可能对某些人有用,但对其他人无效,但我希望答案对您有用,如果没有,请告诉我,并希望,我可以想出另一个解决方案。

有多个脚本,因为有些 PHP 文件需要不同的脚本,有些服务器的设置也不同,而且每个都有不同的要求,有些只需要 HTTP/S,有些只需要 WWW,有些需要 FTP/S,每个都可以工作关于用户自己的脚本是如何设置的,我为每个脚本提供了一些文字说明他们所做的事情。

关于php - 在 PHP 中将纯文本 URL 转换为 HTML 超链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1960461/

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