|  | 
 
| 复制代码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中含有下面两个网址,则调用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
 | 
 |