ホームページ  >  記事  >  バックエンド開発  >  Curl を使用してリモート コンテンツをクロールする場合の URL 中国語エンコードの問題に関するディスカッションの例_PHP チュートリアル

Curl を使用してリモート コンテンツをクロールする場合の URL 中国語エンコードの問題に関するディスカッションの例_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:25:421018ブラウズ

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

コードをコピーします コードは次のとおりです:

string urlencode( string str)

-_ を除く、この文字列内のすべての非英数字文字を含む文字列を返します。はパーセント記号 (%) とそれに続く 2 つの 16 進数に置き換えられ、スペースはプラス記号 (+) としてエンコードされます。
例 1: urlencode 関数と rawurlencode 関数の違い
コードをコピーします コードは次のとおりです:
$str='blog'
echo urlencode($str);
echo "< ;br>";
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=% E5%8D%9A%20%E5%AE%A2";

コードをコピーします コードは次のとおりです:
$url='http://www .baidu.com/s?wd=blog';
$arr=explode('=',$url);
$url=$arr[0].'='.rawurlencode($arr[1]); echo $url;


結果:
http://www.baidu.com/s?wd=%E5%8D%9A%20%E5%AE%A2
次の URL エンコード関数を使用する可能性があります


コードをコピーします コードは次のとおりです:
function 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);
}
}
return $url
}


url 結果:
http://www.baidu.com/s?wd=%E5%8D%9A%20%E5%AE% A2

http://www.bkjia.com/PHPjc/824958.html

本当http://www.bkjia.com/PHPjc/824958.html技術記事 PHP で URL をエンコードするには、urlencode() または rawurlencode() を使用できます。この 2 つの違いは、前者はスペースを「+」としてエンコードし、後者はスペースを「%20」としてエンコードすることです。ただし、注意が必要です。 ..
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。