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しています。
関連情報
関連関数は エスケープ処理関数 を参照してください。