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您在正则表达式中使用的分隔符,以便必要时可以转义它。例如,@
字符不需要转义,但如果它用作分隔符,则必须转义。