PHP で URL をエンコードするには、urlencode() または rawurlencode() を使用できます。この 2 つの違いは、前者はスペースを '+' としてエンコードするのに対し、後者はスペースを '%20' としてエンコードすることです。エンコード時に URL の一部のみをエンコードする必要があることに注意してください。そうでないと、URL 内のコロンとバックスラッシュもエスケープされます。詳細な説明は次のとおりです:
string urlencode (string str)
-_ を除くすべての非英数字文字がパーセント記号 (%) に置き換えられ、その後に 2 つの 16 進数が続き、スペースがプラス記号 (+) としてエンコードされた文字列を返します。
例1: urlencode関数とrawurlencode関数の違い
コードは次のとおりです | コードをコピー |
$str='ブログ'; echo urlencode($str); echo " "; 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'; |
結果:
http://www.baidu.com/s?wd=%E5%8D%9A%20%E5%AE%A2
おそらく次の 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 を返します; } echo cn_urlencode($url); ?> |
URL結果:
http://www.baidu.com/s?wd=%E5%8D%9A%20%E5%AE%A2