preg_match用于邮政编码和位置

时间:2011-06-16 16:54:08

标签: php regex preg-match

我正在尝试从某个位置提取两条信息。

示例位置将是: Hocking Parade,索伦托WA 6020

我试图提取“索伦托”和“6020”。

“Hocking Parade”是一条我不需要的街道,其后面总是会有一个逗号。 “WA”是一个常数。邮政编码是4位数。

编辑:应该澄清日期实际上是格式: <span>Hocking Parade, Sorrento WA 6020</span>

使用: preg_match('/^.*, (.*) [A-Z]{2} (\d{4})$/','Hocking Parade, Sorrento WA 6020',$uTitle);

不起作用: preg_match('/^.*, (.*) [A-Z]{2} (\d{4})$/','<span>Hocking Parade, Sorrento WA 6020</span>',$uTitle);

3 个答案:

答案 0 :(得分:1)

这就是你需要的:

$address= "Hocking Parade, Sorrento WA 6020";
preg_match_all(', (.*?) WA (\d{4})/i', $address, $result, PREG_PATTERN_ORDER);
$city = $result[1][0];
$zip = $result[2][0];

欢呼声,

答案 1 :(得分:0)

怎么样:

$str = "<span>Hocking Parade, Sorrento WA 6020</span>";
preg_match('/,\s+(.*)\s+[A-Z]{2}\s+(\d{4})/', $str, $m);
echo $m[1]; // prints Sorrento
echo $m[2]; // prints 6020

答案 2 :(得分:0)

试试这个:

<?
$target = '<span>Hocking Parade, Sorrento WA 6020</span>';

preg_match("/.+?,\s+([^\s]+).+?([^<]+)/", $target, $matched); 
echo '<pre>'; print_r($matched); echo '</pre>';
?>

输出:

Array
(
    [0] => Hocking Parade, Sorrento WA 6020
    [1] => Sorrento
    [2] => WA 6020
)