Php 如何修复preg_match()未知修饰符'';在localeconv()中

Php 如何修复preg_match()未知修饰符'';在localeconv()中,php,regex,preg-match,Php,Regex,Preg Match,问题在'decimal\u point'=>string'/' 但是有没有人有好的解决办法 错误: preg_match()未知修饰符“?” 功能: array (size=18) 'decimal_point' => string '/' (length=1) 'thousands_sep' => string ',' (length=1) 'int_curr_symbol' => string 'IRR' (length=3) 'currency_symb

问题在
'decimal\u point'=>string'/'

但是有没有人有好的解决办法

错误

preg_match()未知修饰符“?”
功能:

array (size=18)
  'decimal_point' => string '/' (length=1)
  'thousands_sep' => string ',' (length=1)
  'int_curr_symbol' => string 'IRR' (length=3)
  'currency_symbol' => string 'ريال' (length=8)
  'mon_decimal_point' => string '/' (length=1)
  'mon_thousands_sep' => string ',' (length=1)
  'positive_sign' => string '' (length=0)
  'negative_sign' => string '-' (length=1)
  'int_frac_digits' => int 2
  'frac_digits' => int 2
  'p_cs_precedes' => int 0
  'p_sep_by_space' => int 0
  'n_cs_precedes' => int 0
  'n_sep_by_space' => int 0
  'p_sign_posn' => int 3
  'n_sign_posn' => int 3
  'grouping' => 
    array (size=1)
      0 => int 3
  'mon_grouping' => 
    array (size=1)
      0 => int 3
*@param string$str输入字符串
*@返回布尔值
*/
公共静态函数数值($str)
{
//获取当前区域设置的小数点
列表($decimal)=数组_值(localeconv());
//前瞻用于确保字符串至少包含一位数字(小数点之前或之后)
return(bool)preg_match('/^-?+(?=.[0-9])[09]*+'.preg_quote($decimal)。'?+[0-9]*+$/D',(string)$str);
}
这是localeconv()转储:

array (size=18)
  'decimal_point' => string '/' (length=1)
  'thousands_sep' => string ',' (length=1)
  'int_curr_symbol' => string 'IRR' (length=3)
  'currency_symbol' => string 'ريال' (length=8)
  'mon_decimal_point' => string '/' (length=1)
  'mon_thousands_sep' => string ',' (length=1)
  'positive_sign' => string '' (length=0)
  'negative_sign' => string '-' (length=1)
  'int_frac_digits' => int 2
  'frac_digits' => int 2
  'p_cs_precedes' => int 0
  'p_sep_by_space' => int 0
  'n_cs_precedes' => int 0
  'n_sep_by_space' => int 0
  'p_sign_posn' => int 3
  'n_sign_posn' => int 3
  'grouping' => 
    array (size=1)
      0 => int 3
  'mon_grouping' => 
    array (size=1)
      0 => int 3
github上的相关问题

由于您在regexp中使用了
/
作为分隔符,因此请将其与第二个参数一起传递给函数:

return (bool) preg_match('/^-?+(?=.*[0-9])[09]*+' . preg_quote($decimal, '/') . '?+[0-9]*+$/D', (string) $str);
// -----------------------------------------------------------------------^
引自手册:

请注意,/不是特殊的正则表达式字符

[……]

分隔符
如果指定了可选分隔符,也将对其进行转义。这对于转义所需的分隔符非常有用 通过PCRE功能。/是最常用的分隔符


由于您在regexp中使用了
/
作为分隔符,因此也将其作为第二个参数传递给函数:

return (bool) preg_match('/^-?+(?=.*[0-9])[09]*+' . preg_quote($decimal, '/') . '?+[0-9]*+$/D', (string) $str);
// -----------------------------------------------------------------------^
引自手册:

请注意,/不是特殊的正则表达式字符

[……]

分隔符
如果指定了可选分隔符,也将对其进行转义。这对于转义所需的分隔符非常有用 通过PCRE功能。/是最常用的分隔符


请将完整问题与堆栈溢出上的代码示例一起发布,而不是链接到GitHub,好吗?我已编辑了该问题。您是否可以将完整问题与堆栈溢出上的代码示例一起发布,而不是链接到GitHub,请?我已经编辑了这个问题。所以如果小数点有另一个字符,它会不会有问题???绝对不会!总而言之:您可以在正则表达式中使用任意字符作为分隔符,例如
preg_-match('!foo!')
preg_-match('@foo@')
<必须告诉code>preg_quote您在正则表达式中使用的分隔符,以便必要时可以转义它。例如,
@
字符不需要转义,但如果它用作分隔符,则必须转义。因此,如果
小数点
有另一个字符,是否会因为出现问题而转义???绝对不会!总而言之:您可以在正则表达式中使用任意字符作为分隔符,例如
preg_-match('!foo!')
preg_-match('@foo@')
<必须告诉code>preg_quote您在正则表达式中使用的分隔符,以便必要时可以转义它。例如,
@
字符不需要转义,但如果它用作分隔符,则必须转义。