$file="[{\"name\":\"安徽省\",\"code\":\"340000\"},{\"name\":\"北京市\",\"code\":\"110000\"},{\"name\":\"福建省\",\"code\":\"350000\"},{\"name\":\"甘?省\",\"code\":\"620000\"},{\"name\":\"??省\",\"code\":\"440000\"},{\"name\":\"?西?族自治?\",\"code\":\"450000\"},{\"name\":\"?州省\",\"code\":\"520000\"},{\"name\":\"海南省\",\"code\":\"460000\"},{\"name\":\"河北省\",\"code\":\"130000\"},{\"name\":\"河南省\",\"code\":\"410000\"},{\"name\":\"黑?江省\",\"code\":\"230000\"},{\"name\":\"湖北省\",\"code\":\"420000\"},{\"name\":\"湖南省\",\"code\":\"430000\"},{\"name\":\"吉林省\",\"code\":\"220000\"},{\"name\":\"江?省\",\"code\":\"320000\"},{\"name\":\"江西省\",\"code\":\"360000\"},{\"name\":\"??省\",\"code\":\"210000\"},{\"name\":\"?蒙古自治?\",\"code\":\"150000\"},{\"name\":\"?夏回族自治?\",\"code\":\"640000\"},{\"name\":\"青海省\",\"code\":\"630000\"},{\"name\":\"山?省\",\"code\":\"370000\"},{\"name\":\"山西省\",\"code\":\"140000\"},{\"name\":\"?西省\",\"code\":\"610000\"},{\"name\":\"上海市\",\"code\":\"310000\"},{\"name\":\"四川省\",\"code\":\"510000\"},{\"name\":\"天津市\",\"code\":\"120000\"},{\"name\":\"西藏自治?\",\"code\":\"540000\"},{\"name\":\"新疆?吾?自治?\",\"code\":\"650000\"},{\"name\":\"?南省\",\"code\":\"530000\"},{\"name\":\"浙江省\",\"code\":\"330000\"},{\"name\":\"重?市\",\"code\":\"500000\"}]";



preg_match("#{\"name\":\"(.*?)\",\"code\":\"350000\"}#i",$file,$rg1);
// print_r($rg1);exit();
$Province=$rg1[1];


不知道为什么始终得到我要的 福建省 求解。。


回复讨论(解决方案)

把 \ 换成 \\\ 再试试

header("content-type:text/html;charset=utf-8");$file="[{\"name\":\"安徽省\",\"code\":\"340000\"},{\"name\":\"北京市\",\"code\":\"110000\"},{\"name\":\"福建省\",\"code\":\"350000\"},{\"name\":\"甘?省\",\"code\":\"620000\"},{\"name\":\"??省\",\"code\":\"440000\"},{\"name\":\"?西?族自治?\",\"code\":\"450000\"},{\"name\":\"?州省\",\"code\":\"520000\"},{\"name\":\"海南省\",\"code\":\"460000\"},{\"name\":\"河北省\",\"code\":\"130000\"},{\"name\":\"河南省\",\"code\":\"410000\"},{\"name\":\"黑?江省\",\"code\":\"230000\"},{\"name\":\"湖北省\",\"code\":\"420000\"},{\"name\":\"湖南省\",\"code\":\"430000\"},{\"name\":\"吉林省\",\"code\":\"220000\"},{\"name\":\"江?省\",\"code\":\"320000\"},{\"name\":\"江西省\",\"code\":\"360000\"},{\"name\":\"??省\",\"code\":\"210000\"},{\"name\":\"?蒙古自治?\",\"code\":\"150000\"},{\"name\":\"?夏回族自治?\",\"code\":\"640000\"},{\"name\":\"青海省\",\"code\":\"630000\"},{\"name\":\"山?省\",\"code\":\"370000\"},{\"name\":\"山西省\",\"code\":\"140000\"},{\"name\":\"?西省\",\"code\":\"610000\"},{\"name\":\"上海市\",\"code\":\"310000\"},{\"name\":\"四川省\",\"code\":\"510000\"},{\"name\":\"天津市\",\"code\":\"120000\"},{\"name\":\"西藏自治?\",\"code\":\"540000\"},{\"name\":\"新疆?吾?自治?\",\"code\":\"650000\"},{\"name\":\"?南省\",\"code\":\"530000\"},{\"name\":\"浙江省\",\"code\":\"330000\"},{\"name\":\"重?市\",\"code\":\"500000\"}]";preg_match("#{\"name\":\"([^\"]*)\",\"code\":\"350000\"}#i",$file,$rg1);$Province = $rg1[1];print_r($Province);
登录后复制

正则式最好用单引号,双引号遇上转义很麻烦

如果只是想要结果完全可以用json_decode方便快捷

因为你写的匹配的内容太多了,在这里.能匹配

{\"name\":\" 安徽省\",\"code\":\"340000\"},{\"name\":\"北京市\",\"code\":\"110000\"},{\"name\":\"福建省\",\"code\":\"350000\"}

看出上面的红色字体就明白,因为你没有做限定,所有就会出现你说的问题,最简单就是把 . 匹配的内容加以限定,例如改成 [^}] (非}以外的字符),就能排除前2个匹配内容

preg_match("#{\"name\":\"([^}]*?)\",\"code\":\"350000\"}#i",$file,$rg1);
登录后复制

preg_match('#{"name":"([^:]+)","code":"350000"}#i',$file,$rg1);

09-15 15:23