上一篇文章 ,文中链接有浏览器本地协议 chrome/edge
,原生不支持解析该类Url
本文记录如何修改源码,支持解析自定义协议
版本&文件
- Typecho:1.2.0
- 文件:/var/Utils/HyperDown.php
第433行
// link
$text = preg_replace_callback(
"/<((https?|chrome|edge):\/\/.+|(?:mailto:)?[_a-z0-9-\.\+]+@[_\w-]+(?:\.[a-z]{2,})+)>/i",
function ($matches) {
$url = $this->cleanUrl($matches[1]);
$link = $this->call('parseLink', $url);
return $this->makeHolder(
"<a href=\"{$url}\">{$link}</a>"
);
},
$text
);
{/tabs-pane}
{tabs-pane label="修改前"}
// link
$text = preg_replace_callback(
"/<(https?:\/\/.+|(?:mailto:)?[_a-z0-9-\.\+]+@[_\w-]+(?:\.[a-z]{2,})+)>/i",
function ($matches) {
$url = $this->cleanUrl($matches[1]);
$link = $this->call('parseLink', $url);
return $this->makeHolder(
"<a href=\"{$url}\">{$link}</a>"
);
},
$text
);
{/tabs-pane}
第1703行
if (preg_match("/^\w+:/i", $url) && !preg_match("/^(https?|mailto|chrome|edge):/i", $url)) {
return '#';
}
{/tabs-pane}
{tabs-pane label="修改前"}
if (preg_match("/^\w+:/i", $url) && !preg_match("/^(https?|mailto):/i", $url)) {
return '#';
}
{/tabs-pane}
举一反三
上文只是增加了 chrome/edge
协议,还可以增加 ftp
等其他协议,只需要继续追加即可
评论 (0)