Heim  >  Artikel  >  Backend-Entwicklung  >  正则表达式 xml 掏出多个详细的值

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

WBOY
WBOYOriginal
2016-06-13 12:24:44944Durchsuche

正则表达式 xml 取出多个详细的值
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使用三次么?
该怎么写这样的表达式?
------解决思路----------------------
使用正则捕获功能。

<br /><?php <br />$s = '<PY>1A0003<br><font color='#FF8000'>------解决思路----------------------</font><br>B股指数<br><font color='#FF8000'>------解决思路----------------------</font><br>BGZS<br><font color='#FF8000'>------解决思路----------------------</font><br>16</PY><br /><PY>1B0001<br><font color='#FF8000'>------解决思路----------------------</font><br>工业指数<br><font color='#FF8000'>------解决思路----------------------</font><br>GYZS<br><font color='#FF8000'>------解决思路----------------------</font><br>16</PY><br /><PY>1B0002<br><font color='#FF8000'>------解决思路----------------------</font><br>商业指数<br><font color='#FF8000'>------解决思路----------------------</font><br>SYZS<br><font color='#FF8000'>------解决思路----------------------</font><br>16</PY><br /><PY>1B0004<br><font color='#FF8000'>------解决思路----------------------</font><br>地产指数<br><font color='#FF8000'>------解决思路----------------------</font><br>DCZS<br><font color='#FF8000'>------解决思路----------------------</font><br>16</PY><br /><PY>1B0005<br><font color='#FF8000'>------解决思路----------------------</font><br>公用指数<br><font color='#FF8000'>------解决思路----------------------</font><br>GYZS<br><font color='#FF8000'>------解决思路----------------------</font><br>16</PY><br /><PY>1B0006<br><font color='#FF8000'>------解决思路----------------------</font><br>综合指数<br><font color='#FF8000'>------解决思路----------------------</font><br>ZHZS<br><font color='#FF8000'>------解决思路----------------------</font><br>16</PY>';<br /><br />preg_match_all('/<PY>([^<br><font color='#FF8000'>------解决思路----------------------</font><br>]*)\<br><font color='#FF8000'>------解决思路----------------------</font><br>([^<br><font color='#FF8000'>------解决思路----------------------</font><br>]*)\<br><font color='#FF8000'>------解决思路----------------------</font><br>([^<br><font color='#FF8000'>------解决思路----------------------</font><br>]*)\<br><font color='#FF8000'>------解决思路----------------------</font><br>([^<]*)<\/PY>/', $s, $matches);<br />print_r($matches[1]);<br />print_r($matches[2]);<br />print_r($matches[3]);<br />print_r($matches[4]);<br /><br />


结果:
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
)
------解决思路----------------------
<br />$str = <<<EOF<br /><root><br /><PY>1A0003<br><font color='#FF8000'>------解决思路----------------------</font><br>B股指数<br><font color='#FF8000'>------解决思路----------------------</font><br>BGZS<br><font color='#FF8000'>------解决思路----------------------</font><br>16</PY><br /><PY>1B0001<br><font color='#FF8000'>------解决思路----------------------</font><br>工业指数<br><font color='#FF8000'>------解决思路----------------------</font><br>GYZS<br><font color='#FF8000'>------解决思路----------------------</font><br>16</PY><br /><PY>1B0002<br><font color='#FF8000'>------解决思路----------------------</font><br>商业指数<br><font color='#FF8000'>------解决思路----------------------</font><br>SYZS<br><font color='#FF8000'>------解决思路----------------------</font><br>16</PY><br /><PY>1B0004<br><font color='#FF8000'>------解决思路----------------------</font><br>地产指数<br><font color='#FF8000'>------解决思路----------------------</font><br>DCZS<br><font color='#FF8000'>------解决思路----------------------</font><br>16</PY><br /><PY>1B0005<br><font color='#FF8000'>------解决思路----------------------</font><br>公用指数<br><font color='#FF8000'>------解决思路----------------------</font><br>GYZS<br><font color='#FF8000'>------解决思路----------------------</font><br>16</PY><br /><PY>1B0006<br><font color='#FF8000'>------解决思路----------------------</font><br>综合指数<br><font color='#FF8000'>------解决思路----------------------</font><br>ZHZS<br><font color='#FF8000'>------解决思路----------------------</font><br>16</PY><br /></root><br />EOF;<br /><br />$s = simplexml_load_string($str);<br />foreach($s->xpath("//PY") as $k=>$v){<br />	list($a[],$b[],$c[])=explode('<br><font color='#FF8000'>------解决思路----------------------</font><br>',$v);<br />}<br />echo "<pre class="brush:php;toolbar:false">";<br />print_r($a);<br />print_r($b);<br />print_r($c);<br />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
)
*/

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn