php在第一次出现字母时分割字符串
我有以下字符串php在第一次出现字母时分割字符串,php,regex,string,split,explode,Php,Regex,String,Split,Explode,我有以下字符串 $string = "18/05-01/06 01/06-06/07 06/07-22/08 22/08-14/09 DR Record + 2 21.47 20.24 27.15 20.24 BE Record + 2 24.05 22.68" 我想在找到的第一个字母处拆分它(字母每次都不同)。我发现了一个类似的问题,有下面的例子 $split = explode('-', 'orange-yellow-red',2); echo $split[1]; //output ye
$string = "18/05-01/06 01/06-06/07 06/07-22/08 22/08-14/09 DR Record + 2 21.47 20.24 27.15 20.24 BE Record + 2 24.05 22.68"
我想在找到的第一个字母处拆分它(字母每次都不同)。我发现了一个类似的问题,有下面的例子
$split = explode('-', 'orange-yellow-red',2);
echo $split[1]; //output yellow-red
但这是假设你知道这封信是什么。有没有办法指定任何字母?我以前使用过preg split,但这不能限制,而且我对regex也不是很好
如果explode可以与regex一起使用,那么类似的东西可能会起作用,但这只是一个示例,因为它不起作用
$string = "18/05-01/06 01/06-06/07 06/07-22/08 22/08-14/09 DR Record + 2 21.47 20.24 27.15 20.24";
$split = explode([A-Za-z], $string,2);
试试看
我知道你想保留这封信-如果你想让它与之前的字符串保持一致,请使用lookback:
preg_split('/(?<=[a-z])/i', $string, 2);
如果要将其分开,请增加拆分的数量并同时使用这两种方法
preg_split('/(?<=[a-z])|(?=[a-z])/i', $string, 3);
preg_split('/(?Try
我知道你想保留这封信-如果你想让它与之前的字符串保持一致,请使用lookback:
preg_split('/(?<=[a-z])/i', $string, 2);
如果要将其分开,请增加拆分的数量并同时使用这两种方法
preg_split('/(?<=[a-z])|(?=[a-z])/i', $string, 3);
preg_split('/(?使用
[a-zA-Z]告诉它找到第一个字母,然后它将从那里分离
$stringArray
将保存两个结果字符串,请注意,它会取出拆分的字母
不过,您可以使用获取两个字符串,这样它就不会去掉第一个字母
preg_match("/([^a-zA-Z]+)(.*)/",$string,$Matches);
这里正则表达式告诉它捕获第一个字母之前的所有内容,然后再捕获之后的所有内容
$Matches[1]
将包含
18/05-01/06 01/06-06/07 06/07-22/08 22/08-14/09
而$Matches[2]
将包含
DR Record + 2 21.47 20.24 27.15 20.24 BE Record + 2 24.05 22.68
$Match[0]
保存匹配的整个字符串。使用
[a-zA-Z]告诉它找到第一个字母,然后它将从那里分离
$stringArray
将保存两个结果字符串,请注意,它会取出拆分的字母
不过,您可以使用获取两个字符串,这样它就不会去掉第一个字母
preg_match("/([^a-zA-Z]+)(.*)/",$string,$Matches);
这里正则表达式告诉它捕获第一个字母之前的所有内容,然后再捕获之后的所有内容
$Matches[1]
将包含
18/05-01/06 01/06-06/07 06/07-22/08 22/08-14/09
而$Matches[2]
将包含
DR Record + 2 21.47 20.24 27.15 20.24 BE Record + 2 24.05 22.68
$Match[0]
保存已匹配的整个字符串。等等..什么?如何拆分一个不知道是什么的字母?@Rohit类似于拆分[a-Za-z],所以实际上是在第一个字母上拆分,而不是任何其他类型的字符。等等..什么?如何在一个不知道是什么的字母上拆分?@Rohit类似于拆分[a-Za-z],所以实际上是在第一个字母上拆分,而不是任何其他类型的字符。$stringArray=preg_split(/[a-Za-z]/,$string,2)
是一个错误,不是吗?@FrankieTheKneeMan打字错误,忘记了引号!preg_-match
似乎是我需要的东西!你真的不应该使用preg_-match-在验证上下文之外使用正则表达式匹配整个字符串有点代码味道。FrankieTheKneeMan的第三个解决方案也很好,确实如此nt在开头有额外的数组元素(/[a-zA-Z]/,$string,2)
是一个错误,不是吗?@FrankieTheKneeMan打字错误,忘记了引号!preg_-match
似乎是我需要的东西!你真的不应该使用preg_-match-在验证上下文之外使用正则表达式匹配整个字符串有点代码味道。FrankieTheKneeMan的第三个解决方案也很好,确实如此如果我把1改成2,效果会很好。唯一的问题是,它会删除拆分的字母?有没有办法在字母前的空格中拆分它?是的,有-你到底想得到什么结果?我想在第一个字母处拆分字符串,并保留两个ar射线项目完整,但分解和拆分操作都会删除分解/拆分部分。我的意思是:您希望字母在它前面的字符串上,还是在它后面的字符串上,或者作为它自己的项目?我希望在它前面拆分,所以它像这样eg数组([0]=>'18/05-01/06-06/07 06/07-22/08-08-14/09',[1]=>'DR记录+221.4720.2427.1520.24BE记录+224.0522.68')
如果我将1改为2,这就完美了。唯一的问题是,它会删除拆分的字母?有没有办法在字母前的空格上拆分它?是的,有-你实际上在寻找什么结果?我试图在第一个字母处拆分字符串,并保持两个数组项不变,但分解和拆分操作所有操作都会删除分解/拆分部分。我的意思是:您希望字母在它前面的字符串上,还是在它后面的字符串上,或者作为它自己的项目?我希望在它前面拆分字母,所以它是这样的,例如数组([0]=>'18/05-01/06/06-06/07 06/07-22/08 22/08-14/09',[1]=>'DR Record+2 21.47 20.24 27.15 20.24 BE Record+2 24.05 22.68'));