2011-12-20 10 views
3

おはよう、 デリミタには "/"や "〜"などを追加することについて話し合っていますが、このコード行では役に立たないと思います。私がそれを試したすべてが、私にデリミタエラーを与えています。どんな助けでも大歓迎です。あなたの時間をありがとう。以下は私の研究のすべてを引き起こした元のコードです。私はかなり標準です/を使用この場合preg_matchデリミタエラー

if(preg_match('/\d+\.\d+\.\d+\.\d+/', $host)) { 

$allowedHosts = array(); 

// self 
$host = $_SERVER['HTTP_HOST']; 
if(preg_match('\d+\.\d+\.\d+\.\d+', $host)) { 
    $allowedHosts[] = $host; 
} else { 
    $allowedHosts[] = '*.' . $host; 
    $allowedHosts[] = $host; 
} 
+0

"区切り文字エラー" とは何ですか?正確にどのようなエラーメッセージが表示されましたか? –

答えて

4

あなたが正規表現の周りに区切り文字が必要です。しかし、あなたは他のシンボルを使用することができます。

if(preg_match('@\d+\.\d+\.\d+\.\[email protected]', $host)) { 

delimiterは、英数字以外の、非バックスラッシュ、非空白文字にすることができます。

私はあなたがIPアドレスと一致するようにしようとしているあなたの正規表現を見てからと仮定し、あなたの代わりにこれを試みることができる:

$IP = "198.168.1.78"; 
if (preg_match('/^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/',$IP)) { 
    echo "Your IP address is ok."; 
} else { 
    echo "Wrong IP address."; 
} 
+0

参考のため、[デリミタ](http://us3.php.net/manual/en/regexp.reference.delimiters.php)。 "_Aデリミタは、英数字ではなく、バックスラッシュでない空白以外の文字でもかまいません。" – Wiseguy

+0

説明したようにデリミタを使用しようとしましたが、引き続き次のエラーが表示されます.2011-12-20T04:33:11 + 00 :00 WARN(4):[2] preg_match():不明な修飾語句 '\'(/var/www/html/application/modules/Core/controllers/CrossDomainController.php) –

+0

@ウィズゲイが言った: – Petah

3

あなたはIPアドレスを検証しようとしているように見えます。 PHPは

をビルトインしたことのために...

$validIp = filter_var($host, FILTER_VALIDATE_IP); 
+0

私はこれをPHPでどこに適用しますか?私はこの種のことで騒ぎです。 –

+0

@ MarkEllis:上記の条件を代入して条件の本体をスワップします。 – alex

+2

+1大きな目標を読むため – Wiseguy