从特定字符|PHP中分割字符串的最佳方式



对不起!这个问题可能相似,但不是重复的。。。

假设我有不同大小的字符串,如下所示:

zinc tab. 25mg №60
vita sip bla b6 50% b6mg №7
5-nok tab. 50mg №50
Blah blah №50

简而言之,我需要的结果应该如下:

$str1 = "zinc tab"; $str2 = "25mg №60";
$str1 = "vita sip bla b6"; $str2 = "50% b6mg №7";
$str1 = "5-nok tab."; $str2 = "50mg №50";
$str1 = "Blah blah"; $str2 = "№50";

分配的值以数字开头。也就是说,从最后一部分开始的数字需要一分为二。我尝试了implode()explode()preg_split()preg_match()函数。但它们以一定的精度被分解成几个部分。例如:

$str = 'Bla bla 50% 400mg №4';
$results = preg_split('/[^0-9]/', $str);
print_r($results);
// Also i got same result with explode, implode functions...
//Then also tried with substr functions like that
$str[strlen($string) -2];
//But string indices are not always the same.

我也使用过substr()函数,但字符串索引并不总是相同的。有时它可以排在倒数第三或第二位。我需要如下结果:如果文本末尾的任何单词以数字开头或以№,在这一点上应该一分为二。比如:

4 bla bla 40% 50mg №50 should return: 1) 4 bla bla 2) 40% 50mg №50
4 bla bla №50 should resturn 1) 4 bla bla, 2) №50

得到这样的结果怎么容易又快?谢谢

这绝不是我所说的健壮正则表达式
但它通过了测试。

它试图找到定界";单词";哪个似乎是数字字母或№-的数量或数量百分比

preg_match_all("/(.*?)s([d|№]+[a-zA-Z%0-9]{1}.*)/", $str, $m);

https://3v4l.org/cSXec

最新更新