当前位置: 首页 > 面试题库 >

将纯文本URL转换为PHP中的HTML超链接

宫瀚
2023-03-14
问题内容

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

我不希望算法通过任何其他类型的链接(仅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;

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

我提供了多个答案,因为某些服务器的设置不同,所以一个答案可能对某些服务器有用,但对其他服务器不起作用,但是我希望这些答案对您有用,如果不能,请告诉我,希望我能提出另一个解决方案。



 类似资料:
  • 问题内容: 我正在开发一个简单的RSS Reader应用程序,作为Xcode中的初学者项目。目前,我已设置它解析提要,并放置标题,发布日期,描述和内容,并将其显示在WebView中。 我最近决定在用于选择帖子的TableView中显示说明(或内容的删节版本)。但是,这样做时: 它显示了帖子的原始HTML。 我想知道如何仅将TableView的详细UILabel转换为纯文本的HTML。 谢谢! 问题

  • 问题内容: 我有Java程序,它将从服务器接收纯文本。纯文本可能包含URL。Java库中是否有任何Class可以将纯文本转换为HTML文本?还是其他图书馆?如果没有,那该怎么办呢? 问题答案: 我找到了使用模式匹配的解决方案。这是我的代码- 这是输入和输出- 输入文字是可变的: 输出:

  • 问题内容: 我在表格中存储了HTML片段。 不是整个页面,没有标签等,只是基本格式。 我希望能够在给定页面上将Html仅显示为文本,而 无需设置格式 (实际上只是前30-50个字符,但这很容易)。 如何将Html中的“文本”作为纯文本放入字符串中? 所以这段代码。 成为: 你好,世界。有没有人在那里? 问题答案: 如果您在谈论标签剥离,那么无需担心标签之类的事情就相对简单了。如果您需要做的就是显示

  • 问题内容: 不过,这是一个设计:例如,我放置了一个链接,例如 http://example.com 在 textarea中 。我如何获取PHP以检测它是一个链接,然后将其打印为 我记得以前做过这样的事情,但这并不是傻瓜式的证明,它会因为复杂的链接而中断。 修复它 这只是一个经过深思熟虑的.. stackoverflow也可能会使用它:D 有任何想法吗 问题答案: 让我们看一下需求。您有一些用户提供

  • 问题内容: 我使用TinyMCE允许在我的网站中使用最少的文本格式。从生成的HTML中,我想将其转换为纯文本格式以发送电子邮件。我一直在使用一个名为html2text的类,但除其他外,它确实缺少UTF-8支持。但是,我确实这样做,它将某些HTML标记映射为纯文本格式- 就像在HTML之前带有标记的文本周围加下划线。 是否有人使用类似的方法将HTML转换为PHP中的纯文本?如果是这样:您是否推荐我可

  • 我有一个java类使用csv作家创建csv文件。因为知道一切都将以文本格式,我希望一个特定的列数据是一个超链接。例如,考虑一个1行4列的表OUTPUT is:当在excel中打开时。每个条目将在一个新的细胞Col1 Col2 Col3 Col4 在Open Office Col1, Col2, Col3, Col4中打开时的输出 以上数据是我在excel中打开csv文件时得到的。这个创建是由我的c