Home > Backend Development > PHP Tutorial > 关于preg_match的问题

关于preg_match的问题

WBOY
Release: 2016-06-23 14:16:40
Original
982 people have browsed it

$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);
Copy after login

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

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

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

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

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

preg_match("#{\"name\":\"([^}]*?)\",\"code\":\"350000\"}#i",$file,$rg1);
Copy after login

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

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template