PHP变量的正则,用preg_match()连接正则表达式字符串中的变量 - php

我正在使用preg_match()函数来确定是否执行一个函数。

if( preg_match( '/^([0-9]+,){0,3}[0-9]+$/', $string ) ) { ... }

但是我必须使用整数变量并将其集成到正则表达式中:

$integer = 4;

if( preg_match( '/^([0-9]+,){0,' . $integer . '}[0-9]+$/', $string ) ) { ... }

但在应有的时间不匹配。无法在正则表达式字符串中连接变量怎么办?

编辑:

strval($integer)解决了我的问题。在连接它之前,我不得不将整数值转换为字符串(尽管我不明白为什么):

$integer = 4;

if( preg_match( '/^([0-9]+,){0,' . strval($integer) . '}[0-9]+$/', $string ) ) { ... }

参考方案

每当将变量连接到正则表达式模式时,都应通过将变量传递给the preg_quote function来实现。

但是,如果变量var是(如您的示例4一样),则不会有任何区别。您使用的模式将是:

/^([0-9]+,){0,4}[0-9]+$/

在这种情况下,如果它不起作用:请检查$string值,并确保模式匹配。顺便说一句,/^(\d+,){,4}\d+$/较短,并且执行相同的操作。

调用strval并不能解决任何问题,AFAIK ...我已经

你可能感兴趣的:(PHP变量的正则)