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 行,
- "/[url]s*(https?://|ftp://|gopher://|news://|telnet://|rtsp://|mms://|callto://|ed2k://){1}([^["']+?)s*[/url]/i",
在|ftp://|后面加上 file://|;
大约第 60 行,
- returnpreg_replace("/(?<=[^]a-z0-9-="'/])((https?|ftp|gopher|news|telnet|mms|rtsp)://)([a-z0-9/-_+=.~!%@?#%&;:$()|]+)/i",
"[url]13[/url]", ' '.$message);
在|ftp|后面加上 file|;
大约 97 行,
- if(!in_array(strtolower(substr($url, 0, 6)), array('http:/', 'https:', 'ftp://', 'rtsp:/', 'mms://'))) {
在'http:/', 后面加上'file://',;
找到 source/function/function_core.php 文件,大约 2689 行,
- 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 行处,
- "/[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 行,
- 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 行,
- if(!in_array(strtolower(substr($url,
0, 6)), array('http:/', 'https:', 'ftp://', 'rtsp:/', 'mms://'))
&& !preg_match('/^static//', $url))
在'http:/', 后面加上'file://', 。
这些位置修的改完,只适用于论坛发主题时使用,这样修改完后,内网用户发本地文件超链接,就会直接打开了。