Curl を使用してリモート コンテンツをクロールする際の URL 中国語エンコードの問題_PHP チュートリアル

WBOY
リリース: 2016-07-15 13:21:58
オリジナル
874 人が閲覧しました

PHP で URL をエンコードするには、urlencode() または rawurlencode() を使用できます。ただし、前者はスペースを「+」としてエンコードし、後者はスペースを「%20」としてエンコードする点に注意してください。エンコードするときは、URL の一部のみをエンコードする必要があります。エンコードしないと、URL 内のコロンとバックスラッシュもエスケープされます。詳細な説明は次のとおりです。

1
文字列urlencode(文字列str)
-_ を除くすべての非英数字文字がパーセント記号 (%) に置き換えられ、その後に 2 つの 16 進数が続き、スペースがプラス記号 (+) としてエンコードされた文字列を返します。
例1: urlencode関数とrawurlencode関数の違い
$str='ブログ';
エコー urlencode($str);
エコー "
";
echo rawurlencode($str);
URL結果:
%B2%A9+%BF%CD
%B2%A9%20%BF%CD
例 2: URL 中国語エンコード方法
URLより:「http://www.baidu.com/s?wd=blog」
$url='http://www.baidu.com/s?wd=blog';
$arr=explode('=',$url);
$url=$arr[0].'='.rawurlencode($arr[1]);
$urlをエコー;
結果:
おそらく次の URL エンコード関数を使用します
関数 cn_urlencode($url){
$pregstr = "/[x{4e00}-x{9fa5}]+/u";//UTF-8 中国語正規
if(preg_match_all($pregstr,$url,$matchArray)){//中国語に一致し、配列を返します
foreach($matchArray[0] as $key=>$val){
$url=str_replace($val, urlencode($val), $url);//翻訳を中国語に置き換えます
}
if(strpos($url,' ')){//スペースがある場合
$url=str_replace(' ','%20',$url);
}
}
$url を返す;
}

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/477128.html技術記事 PHP で URL をエンコードするには、urlencode() または rawurlencode() を使用できます。この 2 つの違いは、前者はスペースを + としてエンコードし、後者はスペースを %20 としてエンコードすることです。ただし...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!