preg_match分隔符错误

时间:2011-12-20 04:52:59

标签: php preg-match delimiter

美好的一天, 我已经阅读了大约25篇不同的文章,他们正在谈论添加“/”或“〜”等等,作为分隔符但是对这行代码没有用。我尝试过的所有东西仍然给我一个分隔符错误。任何帮助将不胜感激。感谢您的时间。以下是导致我所有研究的原始代码。

$allowedHosts = array();

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

2 个答案:

答案 0 :(得分:4)

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

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

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

if( preg_match('@\d+\.\d+\.\d+\.\d+@', $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.";
}

答案 1 :(得分:3)

看起来您正在尝试验证IP地址。

PHP内置了...

$validIp = filter_var($host, FILTER_VALIDATE_IP);