5ucms论坛
标题:
微擎函数:获取附件的HTTP绝对路径函数tomedia
[打印本页]
作者:
admin
时间:
2017-5-29 19:44
标题:
微擎函数:获取附件的HTTP绝对路径函数tomedia
string tomedia($src, $local_path = false)
复制代码
—— 将参数$src转换为HTTP绝对路径并返回。
参数
$src 要转换的参数;
$local_path 获取的本地还是远程的绝对路径,默认情况下这个参数不起作用,但是,当$_W['setting']['remote']['type']有值“且”不存在文件IA_ROOT . '/' . $_W['config']['upload']['attachdir'] . '/' . $src时,$local_path 为true表示获取本地绝对路径,否则,获取的是远程绝对路径。
函数分析
1)声明全局变量:global $_W;
如果$src参数为空,则返回空:
if(empty($src)){
return '';
}
复制代码
2)如果$src参数里面含有目录'addons/',则返由这个目录构成的对路径:
if (strexists($src, 'addons/')) {
return $_W['siteroot'] . substr($src, strpos($src, 'addons/'));
}
复制代码
例如,$src = "php/addons/os/images";
返回绝对路径是:
http://bbs.5ucms.com/addons/os/images
也就是说在$src里面的addons目录前面全部去掉,加上网站根目录。
3)如果$src 包含有网站根目录,但是,不包含'/addons/'目录的,则解析这个$src进行处理:
if (strexists($src, $_W['siteroot']) && !strexists($src, '/addons/')) {
$urls = parse_url($src);
$src = $t = substr($urls['path'], strpos($urls['path'], 'images'));
}
复制代码
例如,$src = "http://bbs.5ucms.com/php/images/document/css";
那么,经过上面的处理后,$src = $t = "images/document/css"
全部转成小写:
$t = strtolower($src);
复制代码
如果$t中含有下面两个网址,则调用wurl()函数,也就是下面的url()函数,这个url其实就是wurl的简写形式:
if (strexists($t, 'https://bbs.5ucms.com') || strexists($t, 'http://www.5ucms.org')) {
return url('utility/wxcode/image', array('attach' => $src));
}
复制代码
然后,执行/web/source/utility/wxcode.ctrl.php文件里面的代码:
elseif($do == 'image') {
load()->func('communication');
$image = trim($_GPC['attach']);
if(empty($image)) {
exit();
}
$content = ihttp_request($image, '', array('CURLOPT_REFERER' => 'http://www.qq.com'));
header('Content-Type:image/jpg');
echo $content['content'];
exit();
复制代码
其实,这里的条件一般不执行。
4)如果$t中含有http://、https://或前两个字符是'//'表示绝对路径直接返回:
if (strexists($t, 'http://') || strexists($t, 'https://') || substr($t, 0, 2) == '//') {
return $src;
}
复制代码
5)如果$local_path为真,或者,$_W['setting']['remote']['type']为空,确实这个值默认下微擎微信公众号系统并没有作任何设置,或者,file_exists(IA_ROOT . '/' . $_W['config']['upload']['attachdir'] . '/' . $src文件存在,则返回本地服务器绝对路径,否则,返回远程绝对路径。
if ($local_path || empty($_W['setting']['remote']['type']) || file_exists(IA_ROOT . '/' . $_W['config']['upload']['attachdir'] . '/' . $src)) {
$src = $_W['siteroot'] . $_W['config']['upload']['attachdir'] . '/' . $src;
} else {
$src = $_W['attachurl_remote'] . $src;
}
复制代码
最后,返回生成的绝对路径:return $src;
示例
echo tomedia('images/noavatar_middle.gif');
复制代码
结果:
http://bbs.5ucms.com/attachment/images/noavatar_middle.gif
echo tomedia('bbs.5ucms.com/attachment/images/noavatar_middle.gif');
复制代码
结果:
http://bbs.5ucms.com/attachment/images/noavatar_middle.gif
欢迎光临 5ucms论坛 (http://bbs.5ucms.com/)
Powered by Discuz! X3.2