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”出现之前一直运行正常。
如何正确解析上方? (注意名称上可以使用额外的逗号)
答案 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变量。
如果您想要更好的答案,我建议使用捕获组 正则表达式。我会让你成为一个,但你没有给我足够的样本数据。