dポイントプレゼントキャンペーン実施中!

$_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でも駄目でした。
他に何か書き方がありましたらご教授ください。

A 回答 (2件)

シンプルに、


if ( preg_match('/^$|^(http(以下略)

として空行の正規表現で許容させちゃうとか。isset()も削って。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/05/04 22:06

既存のif文のさらに外側に、


「もし、$_POST['url']が空じゃなかったら実行」
というif文を追加すると言うのではだめでしょうか。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/05/04 21:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!