2010-03-02 114 views
3

我有一個印度公司的數據集,並需要從地址欄提取城市和郵編:PHP匹配字符串

地址字段示例: Gowripuram西,Sengunthapuram後,近LGB,卡魯爾,泰米爾納德邦,卡魯爾 - 639 002,印度

正如你所看到的城市是卡魯爾(Karur),在 - (連字符)之後跟着拉鍊。

我需要的PHP代碼以匹配[城市] - [拉鍊]

不知道如何做到這一點我可以找到連字符後的郵編,但不知道如何找到城市,請注意城市可以是2個字。

乾杯你time./

Ĵ

+0

這可能是一個愚蠢的問題,但城市名稱可以包含逗號或數字嗎? – ehdv

回答

0

正則表達式有他們的所有應用程序的地方,但在不同的國家/語言可以爲微量的處理時間,增加了不必要的複雜性。

試試這個:

<?php 

$str = "Gowripuram West, Sengunthapuram Post, Near L.G.B., Karur, Tamilnadu, Karur - 639 002, India"; 
$res = substr($str,strpos($str, "," ,3), strpos($str,"\r")); 
//this results in " Karur - 639 002, India"; 

$ruf = explode($res,"-"); 
//this results in 
//$ruf[0]="Karur " $ruf[1]="639 002, India"; 

$city = $ruf[0]; 
$zip  = substr($ruf[1],0,strpos($ruf[1], ","); 
$country = substr($ruf[1],strpos($ruf[1],","),strpos($ruf[1],"\r")); 

?> 

未經測試。希望它有幫助〜

0

你可以使用爆炸讓所有的字段的數組,你可以在連字符分割。然後你將在一個數組中有2個值。第一個將是你的城市(可以是2個字),第二個將是你的郵編。

$info= explode("-",$adresfieldexample); 
0

我會推薦正則表達式。由於可以預編譯表達式,因此如果反覆使用它,性能應該很好。

0

下面的正則表達式在$matches[1]中放置「Karur」,在$matches[2]中放置「639 002」。

它也適用於多字城市名稱。

$str = "Gowripuram West, Sengunthapuram Post, Near L.G.B., Karur, Tamilnadu, Karur - 639 002, India"; 

preg_match('/.+, (.+) - ([0-9]+ [0-9]+),/', $str, $matches); 

print_r($matches); 

正則表達式也許可以得到改善,但我相信它符合你的問題規定的要求。

1

試試這個:

<?php 
$address = "Gowripuram West, Sengunthapuram Post, Near L.G.B., Karur, Tamilnadu, Karur - 639 002, India"; 

// removes spaces between digits. 
$address = preg_replace('{(\d)\s+(\d)}','\1\2',$address); 

// removes spaces surrounding comma. 
$address = preg_replace('{\s*,\s*}',',',$address); 
var_dump($address); 

// zip is 6 digit number and city is the word(s) appearing betwwen zip and previous comma. 
if(preg_match('@.*,(.*?)(\d{6})@',$address,$matches)) { 
    $city = trim($matches[1]); 
    $zip = trim($matches[2]); 
} 

$city = preg_replace('{\W+$}','',$city); 

var_dump($city); // prints Karur 
var_dump($zip);  // prints 639002 

?> 
0
$info="Gowripuram West, Sengunthapuram Post, Near L.G.B., Karur, Tamilnadu, Karur - 639 002, India"; 

$info1=explode("-",$info); 

$Hi=explode(",","$info1[1]"); 

echo $Hi[0]; 

hopes this will help u.....