解析困难

Parse Difficulties

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

以上是我拥有的样本数据,我有大约 20 个,我将它们循环并注入数据库。我之前使用过 ' - '',' 的 explode,在 "Name, LLC" 出现之前效果很好。

如何正确解析上面的内容? (注意名称上可以有额外的逗号)

使用 substring() 将前 n - 4 个字符传递给 explode,然后使用另一个 substring() 调用将最后两个字符传递给您的 State 变量

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

但是,如果您想要更好的答案,我建议使用 正则表达式 捕获组 。我本来可以给你做的,但你没有给我足够的样本数据。

$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套我不能确定它是否总是有效。

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