关于preg_match的问题

php中文网
发布: 2016-06-23 14:16:40
原创
1082人浏览过

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

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号