preg_match для почтовых индексов и местоположений - PullRequest
1 голос
/ 16 июня 2011

Я пытаюсь извлечь две информации из местоположения.

Пример местоположения: Парад Хоккинга, Сорренто WA 6020

Где я пытаюсь извлечь "Сорренто" и "6020".

«Парад хоккея» - это улица, которая мне не нужна, за которой всегда следует запятая. «ВА» - это константа. Почтовый индекс состоит из 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 ]

1 голос
/ 16 июня 2011

Вот что вам нужно:

$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];

ура,

0 голосов
/ 17 июня 2011

Попробуйте это:

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

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

Выход:

Array
(
    [0] => Hocking Parade, Sorrento WA 6020
    [1] => Sorrento
    [2] => WA 6020
)
0 голосов
/ 16 июня 2011

как насчет:

$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
...