WordPressはis_email()
と呼ばれる便利な機能を提供します。 URLが有効かどうかを確認するために使用できる同様の機能はありますか?
私はis_url()
を試しましたが、それは私の側で考えているだけの願いでした。
ネイティブのphp関数を使う Filter Validator
if (filter_var($url, FILTER_VALIDATE_URL) === FALSE) {
die('Not a valid URL');
}
これは古い投稿ですが、訪れる人にはWP functions esc_url()
と esc_url_raw()
を検討する価値があります。エンティティをエンコードします。 esc_url()
はエンティティをエンコードするので、ユーザーへの表示に適しています。
情報源esc_url()
は許可されたプロトコルと構造のホワイトリストをチェックするので、@ tobltobsによって提示されたリンクによって指摘されたFILTER_VALIDATE_URL
の脆弱性のいくつかを回避することがわかります。
私のプロジェクトで作業中にwp_http_validate_url
が有効なURLの文字列かどうかをチェックするのはとても便利です。
ここから参照してください: https://developer.wordpress.org/reference/functions/wp_http_validate_url/
例えば:
$val = 'http://somevalidurl.com';
if ( wp_http_validate_url( $val ) ) {
// It's valid URL;
} else {
// It's NOT valid URL;
}
有効な場合はURL自体を返し、それ以外の場合はfalseを返します。
ユーザーが送信したURLが およびsafe に保存され、後で表示されることを保証するために、私はお勧めします
esc_url_raw($url) === $url
上記の@orionrushのように、esc_url_raw()
は無効または悪意のあるものを削除してURLをサニタイズします。したがって、文字列に無効なものや悪意のあるものが含まれていなければ、問題ありません。
例えば
if( esc_url_raw($url) === $url ) {
// URL is valid. Use it...
} else {
// URL is invalid or malicious. Don't use it...
}
私はここでそれについてのより長いブログ記事を書きました: https://cmljnelson.wordpress.com/2018/08/31/url-validation-in-wordpress/