PHP:从带有preg_匹配的字符串中获取值,有限字符
对不起,这个标题,我不知道如何更好地解释它 我必须从以下字符串中获取354607: …JLHOIAD1037354607IJ0IJ1IJ2 354607是动态的,但它在任何情况下都有1037,并且在任何情况下都正好有6个字符长 问题是,字符串的长度大约为50.000到1.000.000个字符。所以我想要一个资源友好的解决方案 我试了一下:PHP:从带有preg_匹配的字符串中获取值,有限字符,php,regex,Php,Regex,对不起,这个标题,我不知道如何更好地解释它 我必须从以下字符串中获取354607: …JLHOIAD1037354607IJ0IJ1IJ2 354607是动态的,但它在任何情况下都有1037,并且在任何情况下都正好有6个字符长 问题是,字符串的长度大约为50.000到1.000.000个字符。所以我想要一个资源友好的解决方案 我试了一下: preg_match_all("/1037(.*?){0,5}/", $new, $search1037); 以及: 但是,我不知道如何正确使用正则表达式
preg_match_all("/1037(.*?){0,5}/", $new, $search1037);
以及:
但是,我不知道如何正确使用正则表达式
我希望有人能帮助我
非常感谢 Use,\d{6}表示6个数字
preg_match_all("/1037(\d{6})/", $new, $search1037);
返回一个带有
array(
0 => array(
0 => 1037354607
),
1 => array(
0 => 354607
)
)
选中此项使用\d{6}表示6个数字
preg_match_all("/1037(\d{6})/", $new, $search1037);
返回一个带有
array(
0 => array(
0 => 1037354607
),
1 => array(
0 => 354607
)
)
选中此项因为您关心的是找到一个资源友好的解决方案,所以最好不要使用preg_match。正则表达式通常需要更多的开销,如中所述 相反,您可以使用strstr: 它将返回$string格式的“1037”的第一个实例,以及它后面的所有内容。然后,使用substr: 它返回$string内的子字符串,从位置4开始,其中位置0=1,位置1=0,位置2=3,位置3=7,位置4=6位数字的开头,包括6个字符 为了好玩,在一行中:
$string = substr(strstr($string,'1037'),4,6);
因为您关心的是找到一个资源友好的解决方案,所以最好不要使用preg_match。正则表达式通常需要更多的开销,如中所述 相反,您可以使用strstr: 它将返回$string格式的“1037”的第一个实例,以及它后面的所有内容。然后,使用substr: 它返回$string内的子字符串,从位置4开始,其中位置0=1,位置1=0,位置2=3,位置3=7,位置4=6位数字的开头,包括6个字符 为了好玩,在一行中:
$string = substr(strstr($string,'1037'),4,6);
非常感谢。节省了我很多时间和难看的变通代码!我能再问你一个问题吗?如果我试图搜索06A906032HN,其中除9060和字母数字外的数字都是可变的,但每次都是相同的格式,例如XXX或Z9060XXZZ X代表意图,Z代表字母数字字母。。你知道怎么处理吗?在我的字符串中可能是这样的:06A906032HN,05B906032BC,036906012ALuse/\d{2}[a-zA-Z\d]9060\d{2}[a-zA-Z\d]{2}/,其中\d表示数字,[a-zA-Z\d]表示字母数字的小写和大写,哇,超级快速的答案!非常感谢。我只是忘记了一件事,更好地认识到这一点:最后两个字母数字可以是1或2个字符长。这可以整合吗?哈哈,我就在这附近。在最后一个{2}中,您可以设置像{1,2}这样的范围来指定1到2个字符,或者{2,5}来指定2到5个字符,依此类推。谢谢!!节省了我很多时间和难看的变通代码!我能再问你一个问题吗?如果我试图搜索06A906032HN,其中除9060和字母数字外的数字都是可变的,但每次都是相同的格式,例如XXX或Z9060XXZZ X代表意图,Z代表字母数字字母。。你知道怎么处理吗?在我的字符串中可能是这样的:06A906032HN,05B906032BC,036906012ALuse/\d{2}[a-zA-Z\d]9060\d{2}[a-zA-Z\d]{2}/,其中\d表示数字,[a-zA-Z\d]表示字母数字的小写和大写,哇,超级快速的答案!非常感谢。我只是忘记了一件事,更好地认识到这一点:最后两个字母数字可以是1或2个字符长。这可以整合吗?哈哈,我就在这附近。在最后一个{2}中,您可以设置像{1,2}这样的范围来指定1到2个字符,或者{2,5}来指定2到5个字符,依此类推。