解决方案 »

  1.   

    转码的原因是 上面带中文的,我发现微信里,IPHONE导航页面打不开,是空白的。
    但是如果通过URL请求后,得到的新URL,配置在微信里是可以正常打开百度地图的。所以我想写一个函数来处理这个,求教高手,谢谢。
      

  2.   

    原來的url是http://api.map.baidu.com/direction?origin=latlng:24.481428,118.124813|name:测试起点&destination=latlng:24.503361,118.139877|name:测试终点&mode=driving&region=厦门&output=html新的url是http://map.baidu.com/?l=&s=nav%26sn%3D1%24%24%24%2413149737.11%2C2794316.21%24%24%E6%B5%8B%E8%AF%95%E8%B5%B7%E7%82%B9%24%24%24%24%24%24%26en%3D1%24%24%24%2413151414.05%2C2796984.18%24%24%E6%B5%8B%E8%AF%95%E7%BB%88%E7%82%B9%24%24%24%24%24%24%26sc%3D194%26ec%3D194用新的url就可以打開了,舊的不行,對嗎?所以你想可以根據舊url獲取新url然後使用?
      

  3.   


    兄弟,是这个意思。我就像 用旧的URL产生新的URL。
    多谢啊。
      

  4.   


    <?php$url = 'http://api.map.baidu.com/direction?origin=latlng:24.481428,118.124813|name:测试起点&destination=latlng:24.503361,118.139877|name:测试终点&mode=driving&region=厦门&output=html';
    $newurl = getMapUrl($url);
    echo $newurl;function getMapUrl($url){
        $result = get_headers($url, true);
        return isset($result['Location'])? $result['Location'] : '';
    }?>
      

  5.   


    兄弟,感谢回复。
    不过我用的是新浪SAE,里面提示我:
    Warning: get_headers() has been disabled for security reasons in test.php on line 7
    get_headers()  还能有别的办法替换么?谢谢。
      

  6.   

    试试.$url = 'http://api.map.baidu.com/direction?origin=latlng:24.481428,118.124813|name:测试起点&destination=latlng:24.503361,118.139877|name:测试终点&mode=driving&region=厦门&output=html';
    $newurl = getMapUrl($url);
    echo $newurl;function getMapUrl($url){
        file_get_contents($url);
        $result = $http_response_header;
        if($result){
            foreach($result as $val){
                if(substr($val,0,10)=='Location: '){
                    return str_replace('Location: ','', $val);
                }
            }
        }
        return '';
    }
    禁用的函数:php_real_logo_guid
    php_egg_logo_guid
    readlink
    linkinfo
    symlink
    link
    set_file_buffer
    exec
    system
    escapeshellcmd
    escapeshellarg
    passthru
    shell_exec
    proc_open
    proc_close
    proc_terminate
    proc_get_status
    proc_nice
    getmyuid
    getmygid
    getmyinode
    putenv
    getopt
    sys_getloadavg
    getrusage
    get_current_user
    magic_quotes_runtime
    set_magic_quotes_runtime
    import_request_variables
    debug_zval_dump
    ini_alter
    dl
    pclose
    popen
    stream_socket_client
    stream_socket_server
    stream_socket_accept
    stream_socket_pair
    stream_get_transports
    stream_wrapper_restore
    get_headers
    mail
    mb_send_mail
    openlog
    syslog
    closelog
    apc_add
    apc_bin_dump
    apc_bin_dumpfile
    apc_bin_load
    apc_bin_loadfile
    apc_cache_info
    apc_cas
    apc_clear_cache
    apc_compile_file
    apc_dec
    apc_define_constants
    apc_delete_file
    apc_delete
    apc_exists
    apc_fetch
    apc_inc
    apc_load_constants
    apc_sma_info
    apc_store
    flock
    pfsockopen
    posix_kill
    apache_child_terminate
    apache_get_modules
    apache_get_version
    apache_getenv
    apache_lookup_uri
    apache_reset_timeout
    apache_response_headers
    apache_setenv
    virtual
    mysql_pconnect
    socket_create
    socket_create_pair
    禁用的类:SQLiteDatabase
    SQLiteResult
    SQLiteUnbuffered
    SQLiteException
    APCIterator
      

  7.   

    兄弟,给力啊。100分都给你了。结贴,哈。
    谢谢。看的晚了,还找了一个,顺便分享。private function getHeadersNew($url){ 
    $ch= curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_NOBODY, 1); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_HEADER, 1); 
    $f=curl_exec($ch); 
    curl_close($ch); 
    $h=explode("\n",$f); 
    $r=array(); 
    foreach( $h as $t){ 
      $rr=explode(":",$t,2); 
      if(count($rr)==2 ){ $r[$rr[0]]=trim($rr[1]);} 

    return $r;