file 本地文件传输协议,主要用于访问本地计算机中的文件,就如同在 Windows 资源管理器中
打开文件一样。 Discuz!X1.0 时内置过此传输协议,但是考虑到 Discuz!X2.0 及 Discuz!X1.5 主要被应用在能被外网访问的服务器
上,所以去掉了此功能。现在有些站长提出自己使用 Discuz!X 系列产品是引用在公司内网,供内部交流使用,在发一些资料文档时,加一些 file 本地文
件链接,但 file 本地文件传输协议在 Discuz!X1.5 及 Discuz!X2.0 中失效,现在写些修改方法,提供给需要在内网使用 Discuz!X
系列版本产品的用户。下面以 Discuz!X2.0 为例,介绍修改方法:

 

找到 source/class/class_bbcode.php 文件,大约 36 行,

  1. "/[url]s*(https?://|ftp://|gopher://|news://|telnet://|rtsp://|mms://|callto://|ed2k://){1}([^["']+?)s*[/url]/i",

在|ftp://|后面加上 file://|;
大约第 60 行,

  1. returnpreg_replace("/(?<=[^]a-z0-9-="'/])((https?|ftp|gopher|news|telnet|mms|rtsp)://)([a-z0-9/-_+=.~!%@?#%&;:$()|]+)/i",
    "[url]13[/url]", ' '.$message);

在|ftp|后面加上 file|;
大约 97 行,

  1. if(!in_array(strtolower(substr($url, 0, 6)), array('http:/', 'https:', 'ftp://', 'rtsp:/', 'mms://'))) {

在'http:/', 后面加上'file://',;
找到 source/function/function_core.php 文件,大约 2689 行,

  1. if(preg_match_all("/((https?|ftp|gopher|news|telnet|rtsp|mms|callto)://|www.)([a-z0-9/-_+=.~!%@?#%&;:$()|]+s*)/i",
    $message, $urllist)) {

在|ftp|后面加上 file|;
找到 sourcefunctionfunction_discuzcode.php 文件,大约 100 行处,

 

  1. "/[url(=((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|thunder|qqdl|synacast){1}://|www.|mailto:)?([^s["']+?))?](.+?)[/url]/ies",
    "parseurl('1', '5', '2')", $message);

在|ftp|后面加上 file|;
大约 237 行,

  1. if(!$url
    &&
    preg_match("/((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|thunder|qqdl|synacast){1}://|www.)[^["']+/i",
    trim($text), $matches))

在|ftp|后面加上 file|;
大约 405 行,

  1. if(!in_array(strtolower(substr($url,
    0, 6)), array('http:/', 'https:', 'ftp://', 'rtsp:/', 'mms://'))
    && !preg_match('/^static//', $url))

在'http:/', 后面加上'file://', 。

这些位置修的改完,只适用于论坛发主题时使用,这样修改完后,内网用户发本地文件超链接,就会直接打开了。