I want to have an array of strings with <answers>
and <names>
tags from my xml file, (it's not guaranteed for file to be valid, so I can't parse it with simplexml)
after code execution I get an array with array[0]
equal to something empty with lenght of 5, I thought that my regexp /^[\s\S]*$/
should remove all empty characters and lines, but on practice that array[0]
element is stays the same as after array_filter.
how can I get this array without emty values?
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> "
}
I have xml file
<?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>
and code
<?php
$xml = file_get_contents("test.xml");
$per = preg_replace('/<question[\s\S]+?>|<\/question>|<test>|
<\/test>|<\?xml[\s\S]+?>/i', "", $xml);
$array = explode("\n", $per);
function filter($str)
{
return !preg_match('/^[\s]*$/', $str);
}
$array = array_filter($array, "filter");
var_dump ($array);
?>