将字符串与特定字符分开的最佳方法 | PHP

Best way to divide the string from specific character | PHP

Sorry! This question may be similar but not a duplicate ...

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

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

如何轻松快速地得到这样的结果? 谢谢!

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

它试图找到定界的“单词”,这似乎是 number-letter 或 №-number 或 number-percent

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

https://3v4l.org/cSXec