【问题标题】:Warning: preg_match() [function.preg-match]: Unknown modifier '{' i [duplicate]警告:preg_match() [function.preg-match]: Unknown modifier '{' i [duplicate]
【发布时间】:2012-10-09 07:17:43
【问题描述】:

可能重复:
Warning: preg_match() [function.preg-match]: Unknown modifier '/'

我在使用这段代码时遇到了问题,这给了我下一个错误:

Warning: preg_match() [function.preg-match]: Unknown modifier '{' in /usr/home/anubis-cosmetics.com/web/includes/functions/functions_email.php on line 568

Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in /usr/home/anubis-cosmetics.com/web/includes/functions/functions_email.php on line 586

第 568 行:

 if email domain part is an IP address, check each part for a value under 256
    if (!preg_match ($valid_ip_form, $domain)) {
      $digit = explode( ".", $domain );
      for($i=0; $i<4; $i++) {
        if ($digit[$i] > 255) {
          $valid_address = false;
          return $valid_address;
          exit;
        }

第 586 行:

if (!preg_match($space_check, $email)) { // trap for spaces in
      if (!preg_match ($valid_email_pattern, $email)) { // validate against valid email patterns
        $valid_address = true;
      } else {
        $valid_address = false;
        return $valid_address;
        exit;
      }
    }
    return $valid_address;
  }


?>

我不知道该怎么做,有人可以帮我吗?

编辑/////

我已尝试为此更改分隔符:# --->

// if email domain part is an IP address, check each part for a value under 256
    if (!preg_match ($valid_ip_form, $domain))#
      $digit = explode( ".", $domain );

另外一个:

if (!preg_match($space_check, $email)) { // trap for spaces in
      if (!preg_match ($valid_email_pattern, $email)) { // validate against valid email patterns
        $valid_address = true;
      } else {
        $valid_address = false;
        return $valid_address;
        exit;
      }
    }
    return $valid_address;#

仍然没有工作......有人可以更具体地(向我展示一些内联示例)关于这个问题吗?谢谢!

【问题讨论】:

  • 也包括你的正则表达式,它们似乎是无效的
  • $valid_ip_form 的值是多少?听起来你没有提供分隔符。
  • 这样的问题我们见过多少次了?
  • 你为什么不展示你正在使用的实际模式(一个小时前已经问过了!)?代码中唯一有趣的部分是 $valid_ip_form = ???if (!preg_match ($valid_ip_form, $domain))

标签: php regex


【解决方案1】:

问题在于您的$valid_ip_form$space_check。它们将是无效的 php PCRE 表达式。

我猜你错过了opening and closing delimiters,你的表情看起来像:

^[0-9]{3}$

代替:

~^[0-9]{3}$~
/^[0-9]{3}$/
#^[0-9]{3}$#

或任何你喜欢的。

如果您想了解更多信息,请发布它们

【讨论】:

  • 只是为了确保:我不认为分隔符是 PCRE 的一部分(或者它们是?)。我认为 PHP 要求它们表示正则表达式,但它们不是实际表达式的一部分。所以,$valid_ip_form 可能是一个有效的表达式,但不是 PHP 可以使用的。
  • @FelixKling 据我了解... PHP 将其称为 PCRE,因为它们对它们进行了一些更改(例如添加分隔符)...如果您有任何来源,否则我很乐意学习新知识并修改我的答案。
  • PCRE 实际上是一个独立的库,由 PHP 简单地使用/实现。见pcre.org/pcre.txt。有趣的事实:delimiter 这个词在整个文档中只出现一次;)但我没有读过它,所以这就是我问的原因。
  • $valid_ip_form 的问题是什么意思?好吧,我对此感到迷茫,还有维克托,分隔符应该在哪里?我的意思是我不是 PHP 程序员,所以我只是想将 PHP4 实现为 PHP5。谢谢
  • @FelixKling 你是对的,我已将其更改为php PCRE,这应该是正确的:)
猜你喜欢
  • 2011-07-16
  • 1970-01-01
  • 2011-03-20
  • 2011-08-21
  • 1970-01-01
  • 2013-09-12
  • 1970-01-01
  • 2012-03-30
  • 1970-01-01
相关资源
最近更新 更多