PHP查看特定行的文件

时间:2013-10-22 17:36:59

标签: php

我有一个看起来像这样的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);

3 个答案:

答案 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);