WEB制作のための情報サイト / unazuki Library

esc_url()

基本構文と使い方(引数・実行結果)

基本構文

URLをエスケープし、安全な文字列として出力します。また、URLとして適切でない形式の場合、自動的に適切なURLの形式に補完します。例えば指定したURLにhttpsがない場合、自動的にhttpsを補完して完全なURLにします。

esc_url($url,$protocols,$_context);

引数

引数必須/任意引数に指定するもの
第1引数
$url
必須エスケープしたいURL(文字列)
第2引数
$protocols
任意許可するプロトコルの配列(https、ftp、mailtoなど)
初期値null
第3引数
$_context
任意初期値display
※初期値のまま使います(displayは表示用として使うことを意味します)

実行結果

戻り値(返す値):エスケープされたURLを返します。
※表示するにはechoします。

例1.URLをエスケープしなかった場合

下記の例では、scriptが実行されてしまいます。

$url = 'https://example.com<script>alert("危険なスクリプト!");</script>';
echo $url;

結果:「危険なスクリプト!」というアラートをブラウザに表示

例2.URLをエスケープした場合

下記の例では、URLが適切にエスケープされるため、scriptは実行されません。

$url = 'https://example.com<script>alert("危険なスクリプト!");</script>';
echo esc_url($url);

結果:https://example.comscriptalert(危険なスクリプト!);/script

例3.不完全なURLをエスケープした場合

下記の例では、不完全なURLを補完して完全なURLにしています。

$url_imcomplete = 'example.com';
echo esc_url($url_imcomplete,['https']);

結果:https://example.com

よくある使い方

home_url()でトップページのURLを取得した後、エスケープ処理をしてから表示しています。

<a href="<?php echo esc_url(home_url('/')); ?>">トップページ</a>

※当サイトでは初期値とデフォルト値の言葉の定義を区別せず、原則統一して初期値を採用しています。

関連するテンプレートタグ

テンプレートタグ 説明
antispambot() エンティティ化したメールアドレスを返します。
esc_html() HTMLをエスケープし、安全な文字列として出力します。
esc_attr() 属性値をエスケープし、安全な文字列として出力します。