2024年06月13日
WP関数:esc_url()
この関数の説明
WP関数の esc_url() は、URLのエスケープ処理(無害化)する関数です。
URLのプロトコル(http、https等)をチェックすると共に、無効/危険なキャラクタ削除と記号の文字コード変換を行います。
記号 | 扱い |
< | 削除 |
> | 削除 |
" | 削除 |
' | 'に変換 |
& | &に変換 |
関数
esc_url($text , $protocols , $_context )
パラメータ
$text(文字列)(必須)
エスケープ対象のURL
$protocols(配列)(オプション)
許可するプロトコルの配列。
デフォルトは ['http','https','ftp','ftps','mailto','news','irc','gopher','nntp','feed','telnet']
$_context(文字列)(オプション)
URLをどのように用いるか。省略時は 'display'.
戻り値
無害化されたURL
事例
①無効/危険なキャラクタ削除と記号の文字コード変換
<?php var_dump("https://'&"); echo '<br>'; // 文字'&の扱い var_dump(esc_url("https://'&"));echo '<br>'; // 上記のエスケープ処理 var_dump('https://"<>');echo '<br>'; // 文字"<>の扱い var_dump(esc_url('https://"<>'));echo '<br>';// 上記のエスケープ処理 echo esc_url("https://example.com/<script>xxx</script>"); ?>
■2~3行目:' と & の扱い
2行目の結果:string(10) "https://'&"
3行目の結果:string(20) "https://'&"
上記からエスケープ処理をすると文字コードに置き換わっているのが判ります。
■4~5行目:" < > の扱い
4行目の結果:string(11) "https://"<>"
5行目の結果:string(8) "https://"
上記からエスケープ処理をすると、これらの記号は削除されたことが判ります。
■6行目:URLにスクリプトがあるケース
URLの中にスクリプトがあっても<>が削除されて下記の様になります。スクリプトは動きません。
6行目の結果:https://example.com/scriptxxx/script
②一般的な使い方
<a href="<?php echo esc_url( home_url( '/' ) ); ?>">Home</a>
■home_url()で取得したURLをエスケープ処理してからechoしています。
関連情報
関連関数は エスケープ処理関数 を参照してください。