我有以下字符串
$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,但这不能限制,而且我对正则表达式也没那么好。
如果爆炸可以与正则表达式一起使用,那么这样的东西可能会起作用,但这只是一个例子,因为这不起作用。
$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);
答案 0 :(得分:2)
$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"
$stringArray = preg_split("/[a-zA-Z]/",$string,2);
[a-zA-Z]告诉它找到第一个字母,然后它将从那里拆分
$stringArray
将保留两个结果字符串,请注意它会删除它分割的字母
你可以使用preg_match获取两个字符串,这样它就不会删除第一个字母
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]
包含匹配的整个字符串。
答案 1 :(得分:0)
尝试preg_split。
preg_split('/[a-z]/i', $string, 2);
我看到你想保留这封信 - 如果你想要它之前的字符串,请使用lookbehind:
preg_split('/(?<=[a-z])/i', $string, 2);
如果你想让它与字符串一起使用,请使用前瞻:
preg_split('/(?=[a-z])/i', $string, 2);
如果您希望将它分开,请增加分割数量并同时使用它们。
preg_split('/(?<=[a-z])|(?=[a-z])/i', $string, 3);
在这里:see it in action