什么时候的preg_match():发生未知的修饰错误?(When does preg_match(

2019-06-26 18:11发布

\\    $DigitalSignature have full name value passed
$SignatureMatch =  '/' . strtolower( $NameFirst . ' ' . $NameLast ) . '$/';
if( true == preg_match( $SignatureMatch, strtolower( $DigitalSignature ) ) )
{
    $boolIsValid = true;
}

我有精确匹配姓和名的比赛与数字签名验证码。 但是,这给了错误报告我的错误日志生产(生活)。

preg_match(): Unknown modifier 'b'

我无法重现此错误。 我怎样才能得到先此错误。 而如何解决此错误的精确匹配。

我看到的SO,但没有得到时,将收到此错误的许多问题。 我如何解决这个问题。 有些问题了很多我锯是 -

  1. 警告:的preg_match()[function.preg匹配]:未知的修饰
  2. 在的preg_match()语句未知的修饰
  3. 警告:的preg_match()[function.preg匹配]:未知的修饰
  4. 未知的修饰词“L”错误
  5. 未知的修饰词“G” PHP正则表达式错误
  6. 在未知的修饰词“/” ...? 它是什么?
  7. 的preg_match()未知的修饰词'['帮助
  8. 警告:的preg_match()[function.preg匹配]:未知的修饰'V'
  9. PHP的preg_match精确匹配词
  10. 未知的修饰“V”使用正则表达式的preg_match()表达时
  11. 的preg_match(); -未知的修饰词“+”
  12. 的preg_match错误未知的修饰词“{”
  13. 未知的修饰“(”使用的preg_match()当与正则表达式表达

Answer 1:

如果第一个名字或姓氏包含/ ,你的正则表达式看起来像:

/john/doe$/

preg_match ,这看起来像正则表达式为/john/ ,与尾随doe$/作为改性剂。 这些当然是无效的改性剂。 你需要逃脱正则表达式的分隔符( /使用正则表达式本身中) preg_quote



Answer 2:

一,你输入的字符串(的$NameFirst$NameLast )包含一个/ 。 使用不同的分隔符或字符串逃避它。

此外,如果您若子是一个不同的字符串中只检查,不使用preg_match ,使用stripos()因为它会快很多。

if (stripos($DigitalSignature ,"$NameFirst $NameLast")) { /* It exists! */ }


Answer 3:

$NameFirst$NameLast可以包含斜杠/。

此时应更换此

$SignatureMatch =  '/' . strtolower( $NameFirst . ' ' . $NameLast ) . '$/';

这样 :

$SignatureMatch =  '/' . preg_quote(strtolower( $NameFirst . ' ' . $NameLast ), '/') . '$/';


Answer 4:

你不应该因为你不使用任何模式匹配在这种情况下使用正则表达式。 如果你只是想找到另一个里面一个字符串,然后使用strposstrrpos功能: http://php.net/manual/en/function.strpos.php

如果它是重要的是名称,在签名的结尾部分,那么它会更简单:取从$签名子是从末端长的字符。

$fullname = strtolower( "$NameFirst $NameLast" );
$len = strlen($fullname);
$possible_name = substr( $fullname, -$len, $len );
$boolIsValid = ( $possible_name == $fullname );


Answer 5:

如果您使用T-至REGx ,分隔符会自动为你添加:

$SignatureMatch =  strtolower($NameFirst . ' ' . $NameLast) . '$';

if (pattern($SignatureMatch, 'i')->matches($DigitalSignature))
{
    $boolIsValid = true;
}


文章来源: When does preg_match(): Unknown modifier error occur?