导读:在文章内容页的代码部分(大约在文件中间位置),找到这行代码:
<div class="tx-text f-16 mb15">
<?= $log_conte...
在文章内容页的代码部分(大约在文件中间位置),找到这行代码:
<div class="tx-text f-16 mb15">
<?= $log_content ?>
替换为:
<div class="tx-text f-16 mb15">
<?= make_clickable($log_content) ?>
然后在文件顶部(<?php 标签之后)添加以下函数定义:
/**
* 将纯文本URL转换为可点击链接(跳过已链接的URL和图片src)
*/
function make_clickable($text) {
// 匹配未被<a>标签包裹且不在<img>标签内的http/https/ftp URL
$text = preg_replace_callback(
'/(?<!href="|\'>|">|src=")((?:https?|ftp):\/\/[^\s<>"\'\)]+)/i',
function($matches) {
return '<a href="'.$matches[1].'" target="_blank" rel="nofollow">'.$matches[1].'</a>';
},
$text
);
// 匹配未被<a>标签包裹且不在<img>标签内的www开头的URL
$text = preg_replace_callback(
'/(?<!href="|\'>|">|src=")(?<!\:\/\/)(www\.[^\s<>"\'\)]+)/i',
function($matches) {
return '<a href="http://'.$matches[1].'" target="_blank" rel="nofollow">'.$matches[1].'</a>';
},
$text
);
// 匹配未被<a>标签包裹且不在<img>标签内的电子邮件
$text = preg_replace_callback(
'/(?<!href="|\'>|">|src=")([a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,})/i',
function($matches) {
return '<a href="mailto:'.$matches[1].'">'.$matches[1].'</a>';
},
$text
);
return $text;
}
功能说明
- 1.匹配普通URL:识别以
http://、https://或ftp://开头的网址 - 2.匹配www开头的URL:识别以
www.开头的网址,并自动添加http:// - 3.匹配电子邮件:识别电子邮件地址并转换为
mailto:链接
×
如果觉得文章对您有用,请随意打赏。
您的支持是我们继续创作的动力!
微信扫一扫
支付宝扫一扫
手机扫码阅读

发表评论: