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/