我有一個字符串與文本和法國郵政編碼和法國城市。正則表達式字符串+文本字符串php
$str="lore ipsum facto lore ipsum 75000 Paris";
我想解壓:「75000巴黎」
我知道如何提取郵編:
preg_match('/(\d{5})/',$str, $matches);
但我不知道怎麼也加入城市後。 想法幫助我?
謝謝!
我有一個字符串與文本和法國郵政編碼和法國城市。正則表達式字符串+文本字符串php
$str="lore ipsum facto lore ipsum 75000 Paris";
我想解壓:「75000巴黎」
我知道如何提取郵編:
preg_match('/(\d{5})/',$str, $matches);
但我不知道怎麼也加入城市後。 想法幫助我?
謝謝!
您可以更新您的正則表達式來:
preg_match('/(\d{5} [a-zàâçéèêëîïôûùüÿñæœ\- ]+)/i',$str, $matches);
這樣你的郵政編碼後檢查有一個空格,字母(az或特殊法語字符(小寫或大寫)),-
或空空間。我認爲這涵蓋了所有城市。
例如,對於這個字符串:
lore 99912345 La Roche-sur-Yon
的比賽將是:12345 La Roche-sur-Yon
Avenue de Baixas 66240 Saint-Estève
將匹配:66240 Saint-Estève
這是比我的評論更好的答案,因爲它只會得到郵編後面的下一個單詞,並解釋兩者之間的空間。 唯一可能導致您問題的是如果郵編_before_中有5個數字字符。 雖然這隻適用於名稱中帶有一個單詞的城市名稱。 –
如果您在郵編之前有一些數字,它只會得到最後5個字符串和之後的字符串。例如,對於此輸入,「絕對99975000巴黎城市」將返回:「75000巴黎城市」 –
謝謝您,但它不適用於帶口音的城市 – Bisvan
另一種方式來做到這一點
preg_match('/(\d{5}\s\S+)/',$str, $matches);
你會在$ matches數組中找到你的結果。
注意:這將只適用於與一個單詞的城市名稱。 如果你需要多個詞支持,那麼可能regrex不是完美的東西,因爲它可能會獲取不必要的詞。
有些城市名稱裏面有空格。洛杉磯是其中最着名的一個,而且我的積極程度遠遠超過唯一。 – ChristianF
哦,似乎這也是一個問題.... –
'/(\ d {5})。+ /'應該這樣做,事實上你不需要括號:\ d {5}。+ \ –
巴黎之後有文字嗎? – Daan
有多個「單詞」的城市呢?那麼恰好有5位數字的字符串呢?有沒有考慮過這些? –