我有一个看起来像这样的XML文件
<table id="0">
</table>
<table id="1">
</table>
<table id="2">
</table>
我想检查id x的表是否存在
我一直在尝试这个但是没有用。
$file=fopen("config.xml","a+");
while (!feof($file))
{
if(fgets($file). "<br>" === '<table id="0">'){
echo fgets($file). "<br>";
}
}
fclose($file);
答案 0 :(得分:4)
最简单的方法是使用PHP Simple HTML DOM类:
$html = file_get_html('file.xml');
$ret = $html->find('div[id=foo]');
[编辑]
至于不起作用的代码...请注意,您粘贴的xml没有字符,因此此字符串比较将返回false。如果你想考虑换行,你应该写\n
...但是上面的解决方案更好,因为你不必得到非常严格的输入文件。
答案 1 :(得分:2)
您可以使用DOMDocument class,使用XPath按ID查找,有getElementById()
方法,但它有问题。
// Setup sample data
$html =<<<EOT
<table id="0">
</table>
<table id="1">
</table>
<table id="2">
</table>
EOT;
$id = 3;
// Parse html
$doc = new DOMDocument();
$doc->loadHTML($html);
// Alternatively you can load from a file
// $doc->loadHTMLFile($filename);
// Find the ID
$xpath = new DOMXPath($doc);
$table = $xpath->query("//*[@id='" . $id . "']")->item(0);
echo "Found: " . ($table ? 'yes' : 'no');
答案 2 :(得分:1)
您正在使用模式'a+'
打开文件。 'a'
表示追加,因此它将指针放在文件的末尾。
如果您想阅读该文件,您可能希望从头开始,因此请使用模式'r'
(或'r+'
)。
检查手册中的不同文件模式:http://www.php.net/manual/en/function.fopen.php
此外,fgets($file). "<br>" === '<table id="0">'
永远不会成真!您要将<br>
附加到字符串,然后将其与<table id="0">
进行比较,以期与之匹配。
$file = fopen("config.xml", "r");
while (!feof($file)){
$line = fgets($file);
if($line === '<table id="0">'){
echo $line. "<br>";
}
}
fclose($file);