我有一个印度公司数据集,需要从地址字段中提取City和Zip:
地址字段示例: Gowripuram West,Sengunthapuram Post,Near L.G.B.,Karur,Tamilnadu,Karur - 639 002,India
正如你所看到的城市是Karur,在 - (连字符)后面跟着拉链。
我需要PHP代码来匹配[city] - [zip]
不知道如何做到这一点我可以在Hypen之后找到Zip但不知道如何找到City,请注意City可以是2个单词。
为你的时间喝彩./
Ĵ
答案 0 :(得分: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
?>
答案 1 :(得分:0)
你可以使用explode来创建所有字段的数组,你可以在连字符上拆分它们。那么你将在一个数组中有2个值。第一个将是你的城市(可以是2个单词),第二个将是你的拉链。
$info= explode("-",$adresfieldexample);
答案 2 :(得分:0)
我会推荐正则表达式。如果你一遍又一遍地使用它,性能应该很好,因为你可以预编译表达式。
答案 3 :(得分:0)
以下正则表达式将“Karur”放在$matches[1]
中的$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);
可能会改进正则表达式,但我相信它符合您问题中指定的要求。
答案 4 :(得分:0)
Regex在所有应用程序中占有一席之地,但在不同的国家/语言中,您可以为微量处理时间添加不必要的复杂性。
试试这个:
<?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"));
?>
未经测试。希望它有所帮助〜
答案 5 :(得分: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.....