目前,我在使用条件解析数组中的xml节点时遇到问题,其中使用<mo>
作为分隔符进行解析
这是我的数组(0)
Array([0] => <mi>x</mi><mo>+</mo><mn>2</mn><mo>=</mo><mn>3</mn>);
我想像这样解析
Array[0] => <mi>x</mi>
Array[1] =><mo>+</mo><mn>2</mn>
Array[2]=><mo>=</mo><mn>3</mn>
这是我的编码
<?
$result(0)="<mi>x</mi><mo>+</mo><mn>2</mn><mo>=</mo><mn>3</mn>";
$result1= new simplexml_load_string($result);
$arr_result=[];
foreach($result1 as $key => $value){
$exp_key = explode('<', $key);
if($key[0] == 'mo'){
$arr_result[] = $value;
}
print_r($arr_result);
}
if(isset($arr_result)){
print_r($arr_result);
}
?>
&#13;
提前感谢!
答案 0 :(得分:0)
使用XML的方法似乎过多,因为您真正想要的是根据分隔符提取字符串的子字符串。
这是一个工作示例。它的工作原理是找到<mo>
的位置并切断该部分,然后搜索剩余字符串中的下一个<mo>
。
<?php
$result(0)="<mi>x</mi><mo>+</mo><mn>2</mn><mo>=</mo><mn>3</mn>";
$res = $result(0);
$arr_result=[];
while($pos = strpos($res, "<mo>", 1)) {
$arr_result[] = substr($res, 0, $pos); // grab first match
$res = substr($res, $pos); // grab the remaining string
}
$arr_result[] = $res; // add last chunk of string
print_r($arr_result);
?>
上面的代码有几个问题。 第一:
$result1= new simplexml_load_string($result); // simplexml_load_string() is a function not a class
第二
$key
和$value
不包含'&lt;'和'&gt;'所以,这部分:
$exp_key = explode('<', $key);
永远不会做任何事情而且不需要。
第三
如果您的代码确实有效,那么它只会返回array('+', '=')
,因为您要将mo
元素中的数据附加到结果数组中。