解析困难

时间:2016-01-02 20:07:14

标签: php parsing comma

Address Street - Name, LLC - City, GA
Address Street Name - Name NameLast - City Name, SC
Address-Street-Name - Name Last - City Name, NC

以上是我的样本数据,我有大约20个,我循环,并注入数据库。我以前曾使用' - '','进行爆炸,在“Name,LLC”出现之前一直运行正常。

如何正确解析上方? (注意名称上可以使用额外的逗号)

2 个答案:

答案 0 :(得分:1)

$string = "Address Street - Name, LLC - City, GA
Address Street Name - Name NameLast - City Name, SC
Address-Street-Name - Name Last - City Name, NC";

$regex = "/(.*?) - (.*?)$/m";

preg_match_all($regex, $string, $matches);

var_dump($matches);

对于您提供给我们的数据,此工作正常。因为你刚刚发布了3套我不能确定它是否一直有效。

此正则表达式匹配,直到第一个-前后有空格。秒捕获组然后匹配所有字符,直到行结束。

答案 1 :(得分:0)

使用substring()传递前n - 4个字符以进行爆炸,并使用另一个substring()调用将最后两个字符传递给State变量

看起来你唯一一次遇到你想用于解析的逗号是在每个条目的末尾,在状态首字母缩略词之前。 由于这只是最后四个字符(逗号,空格和2个字母缩写词),您可以简单地传递一个长度为strlen的子字符串 - 每个条目的4个要爆炸。这实际上会从每个条目中删除“,CA”。 然后,您可以将最后两个字符的子字符串传递给State变量。

如果您想要更好的答案,我建议使用捕获组 正则表达式。我会让你成为一个,但你没有给我足够的样本数据。