Bassicly我想要做的是使用PHP打開一個xml文件並使用php編輯它,現在我可以使用fopen()函數。 但我的問題是,我想追加文本到文檔的中間。所以可以說XML文件有10行,我想在最後一行(10)之前附加一些東西,所以現在它將是11行。這可能嗎。由於使用PHP寫入文件
回答
根據該文件有多大,你可以這樣做:
$lines = array();
$fp = fopen('file.xml','r');
while (!feof($fp))
$lines[] = trim(fgets($fp));
fclose($fp);
array_splice($lines, 9, 0, array('newline1','newline2',...));
$new_content = implode("\n", $lines);
不過,你需要重新驗證XML語法之後...
好了之後,9是什麼0。而你在哪裏有newline1和newline2是我要把信息放在哪裏? – DonJuma 2010-12-19 16:24:45
有關詳細信息,請參見[array_splice()](http://www.php.net/manual/en/function.array-splice.php)文檔。 9是插入新元素的位置。 0是你想要替換的索引9之後的元素數目(無,在你的情況下,我假設?),然後是替換數組。 – 2010-12-19 16:27:04
好吧,所以這看起來不錯,但它看起來像你關閉$ fp這是否仍然保存新文本? – DonJuma 2010-12-19 16:32:49
如果你希望能夠到修改從中間文件,使用c+
打開模式:
$fp = fopen('test.txt', 'c+');
for ($i=0;$i<5;$i++) {
fgets($fp);
}
fwrite($fp, "foo\n");
fclose($fp);
上面將寫在第五行「foo」的,而不必完全讀取該文件。
但是,如果要修改XML文檔,它可能更好地使用DOM解析器:
$dom = new DOMDocument;
$dom->load('myfile.xml');
$linenum = 5;
$newNode = $dom->createElement('hello', 'world');
$element = $dom->firstChild->firstChild; // skips the root node
while ($element) {
if ($element->getLineNo() == $linenum) {
$element->parentNode->insertBefore($newNode, $element);
break;
}
$element = $element->nextSibling;
}
echo $dom->saveXML();
當然,上面的代碼依賴於實際的XML文檔結構。但是,$element->getLineNo()
是這裏的關鍵。
- 1. 使用PHP文件寫入
- 2. 使用PHP代碼寫入PHP文件?
- 3. 寫入JSON文件用PHP
- 4. 用PHP寫入文件
- 5. 用PHP寫入文件
- 6. 使用PHP寫入HTML表單的文本文件使用PHP
- 7. 使用PHP寫入.swf文件
- 8. PHP:僅使用cURL寫入文件
- 9. PHP寫入文件
- 10. 寫入PHP文件?
- 11. php。寫入文件
- 12. 寫入.php文件?
- 13. 寫入文件PHP
- 14. PHP寫入文本文件
- 15. 用PHP創建+寫入文本文件
- 16. 通過PHP寫入文件
- 17. PHP寫入文件多行
- 18. php文件寫入問題
- 19. PHP同時文件寫入
- 20. PHP寫入XML文件
- 21. Php寫入文件 - 空?
- 22. PHP不能寫入文件
- 23. PHP:從gunzip寫入文件
- 24. PHP寫入.ini文件
- 25. PHP - 如何寫入文件?
- 26. 併發文件寫入PHP
- 27. PHP:寫入當前文件
- 28. Php MongoDB寫入CSV文件
- 29. unity3d寫入csv文件php
- 30. PHP - 寫入CSV文件
http://php.net/manual/en/function.domnode-insert-before.php – seriousdev 2010-12-19 16:15:30