数组的格式化字符串

时间:2018-12-05 03:18:17

标签: php arrays string

我一直在寻找如何准备字符串以将其解析为数组的方法。

Nissan Micra 1.2dm3 80KM 2015r. 103 000km 
Hyundai Tucson 2dm3 141KM 2005r. 199 000km 
Volkswagen Passat 2dm3 140KM 2014r. 138 000km 
Nissan Note 1.4dm3 88KM 2007r. 120 000km 

看起来很简单,用“”分割字符串就可以了,但是,可能还有一些“陆虎揽胜”和其他长名称,传递的km也将被分割,所以idk怎么办。每次都在周期内分析字符串,因此我的脚本将检查内部是否有任何“两个单词+名称”可以正确使用它们,或者是否存在将这些字符串正确拆分为数组的其他方法?

2 个答案:

答案 0 :(得分:1)

这不是一个好问题。通常情况下,期望您付出一些努力来解决问题。请下次记住这一点。但是,假设文本格式是一致的,则使用正则表达式很容易解决。

$text = "Nissan Micra 1.2dm3 80KM 2015r. 103 000km";
$result = preg_match("/(.*?) ([\d.]+dm3) (\d+KM) (\d+r.) ([\d ]+km)/", $text, $matches);
var_dump($matches);

输出:

array(6) {
  [0] =>
  string(41) "Nissan Micra 1.2dm3 80KM 2015r. 103 000km"
  [1] =>
  string(12) "Nissan Micra"
  [2] =>
  string(6) "1.2dm3"
  [3] =>
  string(4) "80KM"
  [4] =>
  string(6) "2015r."
  [5] =>
  string(9) "103 000km"
}

演示:https://regex101.com/r/gY0HeK/1

如果不需要km或dm 3 之类的单位,则始终可以将其放在括号([\d.]+)dm3([\d ]+)km等之外。

答案 1 :(得分:0)

好的,我为我的问题找到了解决方案。  1.品牌列表。按列表检查字符串并将其从字符串中删除  2.从最后通过参数:通过km,hp等,用preg_replace字母删除(我只需要那些数字)并从字符串中删除它们 3.在字符串中将仅保留模型名称,因此我不需要所有模型的冗长列表即可使用其检查模型

希望它可以帮助那些也像我这样遇到问题的人