2011-12-20 47 views
3

美好的一天, 我已经阅读了大约25篇关于添加“/”或“〜”等的文章,但对于分隔符却无济于事。我试过的所有东西仍然给我一个分隔符错误。任何帮助将不胜感激。感谢您的时间。下面是导致我所有研究的原始代码。preg_match分隔符错误

$allowedHosts = array(); 

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

什么是 “分隔符错误”?你得到了什么错误信息? – 2011-12-20 04:54:47

回答

4

您需要周围的正则表达式的分隔符:

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

在这种情况下,我用/这是非常标准。但你可以使用其他符号:

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 2011-12-20 04:59:11

+0

我尝试使用分隔符如上所述,但是,仍然收到以下错误信息。2011-12-20T04:33:11 + 00 :00 WARN(4):[2] preg_match():未知修饰符'\'(/var/www/html/application/modules/Core/controllers/CrossDomainController.php) – 2011-12-20 05:00:27

+0

@Wiseguy注意到:) – Petah 2011-12-20 05:02:39

3

它看起来像你想验证一个IP地址。

PHP有一个内置的是...

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

我会在哪里应用这个在PHP?我是这种事情的一个小菜鸟。 – 2011-12-20 05:04:16

+0

@MarkEllis:用上述减去赋值交换条件的主体。 – alex 2011-12-20 05:05:43

+2

+1为读入更大的目标 – Wiseguy 2011-12-20 05:06:18