任何人都可以帮我解决快速正则表达式问题吗?
我有以下HTML:
555 Some Street Name<BR />
New Providence VA 22901-1311<BR />
United States<BR />
第一行始终是街道
第二行是City(可以有空格)space State Abbv。空间Zip连字符4位数邮编
第三行是国家。
我需要将HTML分解为变量。任何人都可以提供快速正则表达式吗?
编辑:也许我不清楚。我需要以下内容: 街道地址,城市,州,邮编,4Digit Zip,国家/地区作为个体变量。
答案 0 :(得分:2)
这甚至不需要正则表达式。您可以使用explode("<BR />",...)
拆分不同的行。第一行是Street,最后一行是country。中间行可以使用substr()
进行拆分,因为您知道最后4个字符是4位ZIP,前面的6个字符是ZIP后跟连字符,前面的3个字符是后跟的状态空间。因此,段的字符数(从行的末尾开始计算)是不变的。
答案 1 :(得分:1)
555 Some Street Name<BR />
New Providence VA 22901-1311<BR />
United States<BR />
好的,对于第一部分,让我们分割线
$array = explode('<BR />', $address);
现在您需要从第二行获取信息以进行解析...
$array[1] = New Providence VA 22901-1311;
$ tmp = explode('',$ array [1]);
现在您只需要将所有内容设置为正确的变量名称
$fullZip = array_pop($tmp);
$zipArray = explode('-',$fullZip);
$zip = $zipArray[0];
$Digitzip = $zipArray[1];
$state = array_pop($tmp);
$providence = implode($tmp);
$country = $array[2];
$street = $array[0];
答案 2 :(得分:0)
不需要正则表达式。
$htmlStr = '555 Some Street Name<BR />New Providence VA 22901-1311<BR />United States<BR />';
但请注意,对于更复杂的HTML解析,regexes are not the tool for the job。
答案 3 :(得分:0)
$array = explode('<BR />', $address);
这是最简单的方法,只需按<br />
- 标记拆分字符串即可。如果你可以避免使用正则表达式,那么你应该这样做,因为它们不像explode那样简单的字符串操作。