我希望我的xml文件中包含带有<answers>
和<names>
标记的字符串数组(不保证文件有效,所以我不能这样做用simplexml解析它)
代码执行后,我得到一个数组array[0]
等于空的,长度为5,我认为我的正则表达式/^[\s\S]*$/
应该删除所有空字符和行,但是练习时{{1}元素与array_filter之后保持一致。
如何在没有emty值的情况下获取此数组?
array[0]
我有xml文件
array(8) {
[0]=>
string(5) " "
[3]=>
string(39) "<name>первый вопрос</name> "
[4]=>
string(68) "<answer id="1">Первый ответ на вопрос 1</answer> "
[5]=>
string(68) "<answer id="2">Второй ответ на вопрос 1</answer> "
[6]=>
string(68) "<answer id="3">Третий ответ на вопрос 1</answer> "
[9]=>
string(51) "<name> второй вопрос</name> "
[10]=>
string(68) "<answer id="1">Первый ответ на вопрос 2</answer> "
[11]=>
string(68) "<answer id="2">Второй ответ на вопрос 2</answer> "
}
和代码
<?xml version="1.0" standalone="yes"?>
<test>
<question id="1">
<name>первый вопрос</name>
<answer id="1">Первый ответ на вопрос 1</answer>
<answer id="2">Второй ответ на вопрос 1</answer>
<answer id="3">Третий ответ на вопрос 1</answer>
</question>
<question id="2">
<name> второй вопрос</name>
<answer id="1">Первый ответ на вопрос 2</answer>
<answer id="2">Второй ответ на вопрос 2</answer>
</question>
</test>
答案 0 :(得分:4)
简单的一个班轮。
defaultdict
但是,为什么要使用正则表达式来解析XML文档?我建议您使用原生dict
或$array = array_filter(array_map('trim', file('example.xml')), 'strlen');
代替。
DOMDocument
的示例:
SimpleXMLElement
DOMDocument
的示例:
$dom = new DOMDocument;
$dom->loadXMLFile('example.xml');
$xpath = new DOMXPath($dom);
$q2a1 = $xpath->evaluate('string(/question[@id="2"]/answer[@id="1"])');
答案 1 :(得分:0)
首先替换所有空格或空格,如果不返回则检查为空
function filter($str)
{
$string = preg_replace('/\s+/', '', $str);
if($string !== ""):
return $string;
endif;
}
$array = array_filter($array, "filter");
var_dump ($array);