> 백엔드 개발 > PHP 튜토리얼 > 关于preg_match的问题

关于preg_match的问题

WBOY
풀어 주다: 2016-06-23 14:16:40
원래의
982명이 탐색했습니다.

$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);

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿