Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将数组转换为转义字符串,我可以在正则表达式中使用它?_Php_Arrays_Regex_String_Preg Match - Fatal编程技术网

Php 如何将数组转换为转义字符串,我可以在正则表达式中使用它?

Php 如何将数组转换为转义字符串,我可以在正则表达式中使用它?,php,arrays,regex,string,preg-match,Php,Arrays,Regex,String,Preg Match,我正在从数据库查询子网。最终,我将把一组子网放入字符串数组,结果如下: array = ['10.1.0.1/24', '10.2.0.2/24', '192.168.0.8/16'] 加入上面的数组并确保所有和都正确转义的最佳方法是什么,这样我就可以查看我拥有的字符串是否与数组中的任何一个子网匹配 理想情况下,我会有类似于: if (preg_match(array_as_string, $buffer, $matches)) { } 首先,可以使用循环遍历所有数组值,并使用转义。在此之后

我正在从数据库查询子网。最终,我将把一组子网放入字符串数组,结果如下:

array = ['10.1.0.1/24', '10.2.0.2/24', '192.168.0.8/16']
加入上面的数组并确保所有
都正确转义的最佳方法是什么,这样我就可以查看我拥有的字符串是否与数组中的任何一个子网匹配

理想情况下,我会有类似于:

if (preg_match(array_as_string, $buffer, $matches)) { }

首先,可以使用循环遍历所有数组值,并使用转义。在此之后,您可以使用将它们转换为字符串,例如

$array = array_map(function($ip){
    return preg_quote($ip, "/");
}, $array);

if (preg_match("/\b(" . implode("|", $array) . ")\b/", $buffer, $matches)) { }
因此,您将得到如下正则表达式:

/\b(10\.1\.0\.1\/24|10\.2\.0\.2\/24|192\.168\.0\.8\/16)\b/