• ベストアンサー

URLの内容チェックがうまくいきません

$_POST['url']に何らかの値が格納されている場合のみ、正規表現で値をチェックしたいのですが、現在のソースでは$_POST['url']が空の場合も処理が正規表現に移ってしまい、結果エラーが出てしまいます。 if ( isset($_POST['url']) && preg_match('/^(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)$/', $_POST['url']) && mb_strlen($_POST['url']) <= 100){ 【データベース登録処理】 }else{ echo "エラー:入力内容が正しくありません"; } issetあたりが怪しいとは思うのですが、!emptyでも駄目でした。 他に何か書き方がありましたらご教授ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

シンプルに、 if ( preg_match('/^$|^(http(以下略) として空行の正規表現で許容させちゃうとか。isset()も削って。

rusya
質問者

お礼

回答ありがとうございます。 ご指摘の方法で試してみたところ、動きました! 空行も正規表現で表せるんですね。ありがとうございました。

その他の回答 (1)

  • kuzumiHK
  • ベストアンサー率72% (132/183)
回答No.1

既存のif文のさらに外側に、 「もし、$_POST['url']が空じゃなかったら実行」 というif文を追加すると言うのではだめでしょうか。

rusya
質問者

お礼

早々の回答ありがとうございます。 実は試してみたのですが、結果は同じでした……。どうも$_POST['url']==""の状態を空と見なしていない気がします。

関連するQ&A