我一直在寻找如何准备字符串以将其解析为数组的方法。
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怎么办。每次都在周期内分析字符串,因此我的脚本将检查内部是否有任何“两个单词+名称”可以正确使用它们,或者是否存在将这些字符串正确拆分为数组的其他方法?
答案 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.在字符串中将仅保留模型名称,因此我不需要所有模型的冗长列表即可使用其检查模型
希望它可以帮助那些也像我这样遇到问题的人