2017-09-10 1 views
0

インターネットウェブサイトのURLが不正なユーザーを選択しようとしています。MySQLで不正なURLを選択しました

は私が必要に:

  1. URLが不正な形式である "インターネット" のフィールドを選択し、空の "インターネット" フィールド

  2. を選択していません。

誤った形式の1つのURL(www.te st.com)が入力されています。間にスペースを入れてテストします。私はこのクエリを試しましたが、結果リストは空白です。

$sql = "SELECT * 
FROM calendario 
WHERE `Internet` NOT REGEXP '^(https?:\/\/|www\.)[\.A-Za-z0-9\-]+\.[a-zA-Z]{2,4}' AND `Internet` !='' ORDER BY Data DESC"; 

誰かが私がMySQLのURL検証に間違っていることを知っていますか?

+0

PHPは身を誤っているか、どの行が一致していません?また、posixの文字クラスのバックスラッシュはエスケープしませんが、 '.'はエスケープする必要はなく、最後の文字として' -'は正しいはずです。 – chris85

+0

この範囲に収まらないトップレベルの拡張があります。[a-zA-Z] {2,4} 'https://www.key-systems.net/en/blog/list-of- domain-extensions –

答えて

1

.メタ文字は予想通り、次のクエリは動作するはず[.]

二重引用符\\.でエスケープまたは文字クラスに配置する必要がありますよう:

SELECT * 
    FROM calendario 
WHERE `Internet` NOT REGEXP '^(https?:\/\/|www\\.)[-.A-Za-z0-9]+\\.[a-zA-Z]{2,4}' 
    AND `Internet` !='' ORDER BY Data DESC 
+0

答えをありがとう。 – Indro

+0

@Indro、よろしくお願いします – RomanPerekhrest

関連する問題