提取字符串我有一些字符串(地址),所有這樣的:PHP:從另一個
2街拉姆達,75018,PARIS
我想要得到的郵政編碼,在這例如「75018」。我一直在嘗試不同的解決方案,但我不熟悉轉義字符,也不知道如何檢測字符串中的昏迷。我應該使用哪個函數來提取郵政編碼?
提取字符串我有一些字符串(地址),所有這樣的:PHP:從另一個
2街拉姆達,75018,PARIS
我想要得到的郵政編碼,在這例如「75018」。我一直在嘗試不同的解決方案,但我不熟悉轉義字符,也不知道如何檢測字符串中的昏迷。我應該使用哪個函數來提取郵政編碼?
你可以試試這個:
preg_match('/([0-9]{5})/',$string,$match);
echo $match[1];
只要有地址逗號分隔或只是空格分隔就可以工作
如果所有的地址是法國,其中有一個5位數的郵政代碼,那麼你可以使用下面的正則表達式捕捉到它:
\b(\d{5})\b
在PHP中,你可以使用它preg_match
爲:
$input = '2 rue lambda, 75018, PARIS';
if(preg_match('/\b(\d{5})\b/',$input,$match)) {
$postal_code = $match[1];
}
請注意,這將捕獲地址中的前5位數字。 一般郵政編碼自帶的地址的末端,所以我們可以通過使用正則表達式通過在地址捕捉最後5位數字改善方法:
.*\b(\d{5})\b
如果逗號是永遠存在,這很簡單,只要explode()
$parts = explode(",", "2 rue lambda, 75018, PARIS");
$postcode = trim($parts[1]);
如果總是沒有逗號,該怎麼辦? – dynamic 2011-06-02 13:27:04
這是否總是它的格式?如果是這樣,你可以explode。
$str = '2 rue lambda, 75018, PARIS';
$array = explode(',',$str);
$street = $array[0];
$postal = $array[1];
$city = $array[2];
謝謝,這做了(與echo $匹配[0];),對於我的問題,我認爲這是最好的解決方案,因爲我確信郵政格式將永遠是唯一的字符串(除了科斯特departement的郵政編碼包含字母)。如果有人寫他的地址如「2,rue lambda ...」,爆炸解決方案可能會導致問題。謝謝大家 – Joeyjoejoe 2011-06-02 13:33:30
@joey:是的,這將適用於任何格式。如果這對你有幫助,請考慮將其標記爲答案。 – dynamic 2011-06-02 13:34:17
可能會突破「12345無論什麼,23456,假城市」。確保你的地址永遠不會有5位或更多位的數字。 – cHao 2011-06-02 13:48:21