PHPで文字列がURLかどうか判定する方法を紹介!

ある文字列がURLを表す文字列なのかどうかを判定したい場面が少なからずあります。PHPでは文字列がURLかどうかを判定するための関数がいくつか用意されています。この記事ではそれらの関数を用いて、文字列がURLかどうかを判定する方法を紹介しています。

コンテンツ [表示]

  1. 1PHPで文字列がURLかどうか判定したい
  2. 2PHPで文字列がURLかどうか判定する方法
  3. 2.1正規表現
  4. 2.2filter_var関数
  5. 3まとめ

PHPで文字列がURLかどうか判定したい

PHPで文字列が正しいURLかどうかをチェックしたいという機会が少なからずあります。

今回はPHPで送られてきた文字列がURL形式の文字列かどうかを判定する方法を紹介します。

Photo byviarami

PHPで文字列がURLかどうか判定する方法

PHPで文字列がURLかどうか判定する2つの方法をサンプルコードを使って解説していきます。

正規表現

まずは正規表現を用いて、文字列がURLかどうかをチェックしていきます。

PHPで正規表現の判定を行うにはpreg_match関数を使います。

第一引数にはURL形式を表現した正規表現の文字列$pattern、第二引数にはURL形式かどうかを判定したい対象の文字列$urlを指定しています。また、第三引数に配列$arrを指定することで、$arrに検索結果が代入されます。

パターンにマッチすれば1を返して、対象文字列はURL形式の文字列だと判定できます。パターンにマッチせず0を返せば、対象文字列はURL形式の文字列ではないと判定できます。if文で条件分岐を行い、結果を表示して分かるようにします。

preg_match関数の詳しい使い方は下記の記事でも紹介していますので、ぜひ参考にしてみてください。

あわせて読みたい
preg_match関数
正規表現を用いたパターンマッチを行うことができるpreg_match関数の概要を紹介しています。preg_matchを用いることで、フォームで入力された値のバリデーションをサーバサイド側で行うことができるようになります。
あわせて読みたい
PHPの正規表現で文字数をチェックする方法を解説!のイメージ
PHPの正規表現で文字数をチェックする方法を解説!
正規表現を用いることで、様々な文字列パターンを検査したり置換したりすることができます。PHPでも正規表現を用いて、いろんな機能を実装することのできる関数が提供されています。この記事ではPHPの正規表現で文字数をチェックする方法を解説しています。

filter_var関数

次にfilter_var関数を用いて、文字列がURLかどうかをチェックしていきます。

filter_var関数を用いた方が、正規表現を使うpreg_match関数を用いてチェックしたときよりコードが短くシンプルですね。

filter_var関数は指定したフィルタでデータをフィルタリングします。

第一引数にはURL形式かどうかを判定したい対象文字列を指定します。
第二引数には適用するフィルタを指定します。今回はURLの判定を行いたいので、FILTER_VALIDATE_URLを指定します。

フィルタリングに成功した場合は、フィルタリングされたデータを返します。失敗した場合は、falseを返します。

あわせて読みたい
filter_var関数
PHPのfilter_var関数の概要や使い方をサンプルコード付きで紹介しています。filter_var関数は文字列が指定の形式のものであるかどうかをフィルタリングを行う関数です。フォームのバリデーションなどを比較的簡単に実装することができます。

まとめ

今回、PHPで文字列がURLかどうかを判定するためにサンプルコードを用いてpreg_match関数とfilter_match関数を使って、チェックする方法を紹介しました。

しかし、どちらの関数を用いた場合でもASCIIのURLのみを正しいと判断します。URLに日本語を含む場合や国際化ドメイン名などの場合は正しい判断ができない可能性があることに注意してください。

PHP: 検証フィルタ - Manual
GeekHive採用サイト

関連記事