您好,欢迎访问一九零五行业门户网

关于preg_match的问题

$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);
其它类似信息

推荐信息