【问题标题】:Best way to divide the string from specific character | PHP将字符串与特定字符分开的最佳方法 | PHP
【发布时间】:2020-09-11 07:20:35
【问题描述】:

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

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

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

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

【问题讨论】:

  • 爆炸()?有时很简单。
  • 没有爆炸将它们全部分成一个数组。我只需要将它一分为二。

标签: php laravel split substr


【解决方案1】:

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

它试图找到分隔的“单词”,似乎是数字字母或№-数字或数字百分比

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

https://3v4l.org/cSXec

【讨论】:

    猜你喜欢
    • 2012-11-16
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    相关资源
    最近更新 更多