モバイル WeChat でナビゲーションを実行したいです
現在のナビゲーション URL アドレスを IE アドレスバーに入力すると、正常にアクセスできます: http://api.map.baidu.com/direction?origin=latlng:24.481428 , 118.124813|name:Test starting point&destination=latlng:24.503361,118.139877|name:Testing end point&mode=driving®ion=Xiamen&output=html
入力後、Enter を押すと、アドレスが次のように変更されたことがわかります:
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
に基づいてリクエストした後、PHP を使用して新しい URL を取得する方法を知りたいです元のURLは?ありがとう。
トランスコードの理由は、中国語の文字が含まれているためです。WeChat で、IPHONE ナビゲーション ページが開けず、空白であることがわかりました。
ただし、URL 経由でリクエストした後に取得した新しい URL が WeChat で設定されている場合は、Baidu Map を正常に開くことができます。
それで、これを処理する関数を書きたいのですが、アドバイスをお願いします。ありがとうございます。
元の URL は http://api.map.baidu.com/direction?origin=latlng:24.481428,118.124813|name:test starting point&destination=latlng:24.503361,118.139877|name:test endpoint&mode=driving®ion=Xiamen &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 を使用してくださいと入力しても機能しません。
では、root??URL を取得して、それを使用しますか?
元の URL は http://api.map.baidu.com/direction?origin=latlng:24.481428,118.124813|name:test starting point&destination=latlng:24.503361,118.139877|name:test endpoint&mode=driving®ion= アモイ&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がありません???
では、root??URL を取得して、それを使用しますか?
rree
<?php$url = 'http://api.map.baidu.com/direction?origin=latlng:24.481428,118.124813|name:测试起点&destination=latlng:24.503361,118.139877|name:测试终点&mode=driving®ion=厦门&output=html';$newurl = getMapUrl($url);echo $newurl;function getMapUrl($url){ $result = get_headers($url, true); return isset($result['Location'])? $result['Location'] : '';}?>
试试.
$url = 'http://api.map.baidu.com/direction?origin=latlng:24.481428,118.124813|name:测试起点&destination=latlng:24.503361,118.139877|name:测试终点&mode=driving®ion=厦门&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 '';}
urlencode?
试试.
$url = 'http://api.map.baidu.com/direction?origin=latlng:24.481428,118.124813|name:测试起点&destination=latlng:24.503361,118.139877|name:测试终点&mode=driving®ion=厦门&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 '';}
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; }