我正在尝试使用php在XML文件中搜索数据。 我不是想获取某些元素的值,如果我想要的话,我会使用xpath。
这是我的XML文件的一个示例:
<root>
<author>foo</author>
<date>bar</date>
</root>
假设我的客户想要搜索“fab”字样。 我想要所有带有字符'f'和'b'和'a'的字符串返回。 所以输出将是:
Foo
bar
例如,作者姓名可能是James Westside。
<author>James Westside</author>
用户搜索jam
它将返回James Westside
我希望我的问题很明确。
答案 0 :(得分:1)
您应该使用PHP:XMLReader类。 XMLReader充当游标在文档流上前进,并在途中停在每个节点上。
这样的事情:
$search_phrase = 'fab';
$xml = new XMLReader;
$xml->open('your-xml-file.xml');
while ($xml->read()) {
$node = $xml->expand();
/* Looping through all elements in the XML */
/* Test if the current node is a text node: */
if ($node->nodeType == XMLReader::TEXT) {
/* Loop all letters in search_phrase */
for ($i = 0; $i < strlen($search_phrase); $i++) {
/* Test if the text in the text node is matching any letter i search_phrase: */
if (strpos($node->nodeValue, substr($search_phrase, $i, 1)) !== false) {
echo($node->nodeValue . "\n");
break;
}
}
}
}