1

誰かがこのバグを手伝ってくれませんか。後で別の番号がある場合、一致しないように次のコードが必要です

$query = "SELECT * FROM mytable WHERE server_name REGEXP '(server ?" . $server_id . ")' ";

たとえば、$ server_idが50の場合、現在サーバー500、501などと一致し、私もそれを望んでいませんが、'server50''server50100mbit''server50,100mbit'などと一致させる必要があります。別の番号以外のものであり、まったく何もないこともあります。

Stu

4

2 に答える 2

1

非数字の一致は[^0-9]正規表現にあります。

$query = "SELECT * FROM mytable 
    WHERE server_name REGEXP 'server ?" . $server_id . "([^0-9]|\$)' ";
于 2012-07-02T19:19:17.453 に答える
1

数値に対して正規表現を実行する必要があります。/ ^ 0-9 /そして、あなたがする必要があるのは、一致を返す場合、「ねえ、それは数字です、間違っています!」と言う必要があります。一方、空のセットを返す場合は、一致します。

数字ではないことに対して正規表現を行うこともできます。ここで、^と[の間にNOT文字を入れます。

現時点ではsyntaqxを頭のてっぺんから外していないことを忘れていますが、一般的な用語では/ ^![0-9]/のようになります。

スラッシュは通常、正規表現の記号です。

あなたのものでは、/ ^ serverid [0-9] [0-9] /のようなことをする必要があります。これは、正規表現をSERVERID [] []と比較して、最初の2文字だけを読み取るようにします。より多くの文字がある場合は、それを起動することができます、またはそのようなもの

于 2012-07-02T19:24:11.913 に答える