正则表达式 xml 取出多个详细的值

php中文网
发布: 2016-06-23 13:26:30
原创
1346人浏览过

1A0003|B股指数|BGZS|16
1B0001|工业指数|GYZS|16
1B0002|商业指数|SYZS|16
1B0004|地产指数|DCZS|16
1B0005|公用指数|GYZS|16
1B0006|综合指数|ZHZS|16

这是xml的部分值,请问要如何依次取出相应的值?
比如将1A0003、1B0001放在一个数组里,
B股指数、工业指数放在一个数组里,
BGZS、GYZS放在一个数组。

谢谢各位大牛,
preg_match_all使用三次么?
该怎么写这样的表达式?

达芬奇
达芬奇

达芬奇——你的AI创作大师

达芬奇 50
查看详情 达芬奇

回复讨论(解决方案)

使用正则捕获功能。

<?php $s = '<PY>1A0003|B股指数|BGZS|16</PY><PY>1B0001|工业指数|GYZS|16</PY><PY>1B0002|商业指数|SYZS|16</PY><PY>1B0004|地产指数|DCZS|16</PY><PY>1B0005|公用指数|GYZS|16</PY><PY>1B0006|综合指数|ZHZS|16</PY>';preg_match_all('/<PY>([^|]*)\|([^|]*)\|([^|]*)\|([^<]*)<\/PY>/', $s, $matches);print_r($matches[1]);print_r($matches[2]);print_r($matches[3]);print_r($matches[4]);
登录后复制


结果:
Array
(
    [0] => 1A0003
    [1] => 1B0001
    [2] => 1B0002
    [3] => 1B0004
    [4] => 1B0005
    [5] => 1B0006
)
Array
(
    [0] => B股指数
    [1] => 工业指数
    [2] => 商业指数
    [3] => 地产指数
    [4] => 公用指数
    [5] => 综合指数
)
Array
(
    [0] => BGZS
    [1] => GYZS
    [2] => SYZS
    [3] => DCZS
    [4] => GYZS
    [5] => ZHZS
)
Array
(
    [0] => 16
    [1] => 16
    [2] => 16
    [3] => 16
    [4] => 16
    [5] => 16
)

$str = <<<EOF<root><PY>1A0003|B股指数|BGZS|16</PY><PY>1B0001|工业指数|GYZS|16</PY><PY>1B0002|商业指数|SYZS|16</PY><PY>1B0004|地产指数|DCZS|16</PY><PY>1B0005|公用指数|GYZS|16</PY><PY>1B0006|综合指数|ZHZS|16</PY></root>EOF;$s = simplexml_load_string($str);foreach($s->xpath("//PY") as $k=>$v){	list($a[],$b[],$c[])=explode('|',$v);}echo "<pre class="brush:php;toolbar:false;">";print_r($a);print_r($b);print_r($c);echo "
登录后复制
";/*Array(    [0] => 1A0003    [1] => 1B0001    [2] => 1B0002    [3] => 1B0004    [4] => 1B0005    [5] => 1B0006)Array(    [0] => B股指数    [1] => 工业指数    [2] => 商业指数    [3] => 地产指数    [4] => 公用指数    [5] => 综合指数)Array(    [0] => BGZS    [1] => GYZS    [2] => SYZS    [3] => DCZS    [4] => GYZS    [5] => ZHZS)*/

谢谢大牛的方法,两种方法都试了,都是可以输出结果的!非常感谢!

最佳 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号