在PHP中编辑一个XML节点值

时间:2012-03-16 00:28:34

标签: php xml

我有一个类似于此的XML文件:

<?xml version='1.0'?>
<page>
<desc><title>user</title><username>user</username> 
<petcount>0</petcount> 
<pagedt><![CDATA[<html><body><p><center><h2>I am amazing.</h2></center>
</p></body></html>]]></pagedt></desc> 
<petlist></petlist><friends></friends><messages><message><user>Admin</user><link>/admin</link>
<note>Welcome to My website!</note></message></messages></page>

我试图让PHP只编辑<pagedt>中的文本,并有一个textarea显示当前文件中的内容,到目前为止,我有textarea的内容,运行在形式与phpself和通过邮件。关于如何编辑pagedt的内容的任何想法?

2 个答案:

答案 0 :(得分:0)

您是否尝试将其解析为XML?我知道PHP的DOM库允许您将其解析为一个对象,您可以使用该对象从那里返回pagedt标记和文本内容。从这里开始尝试:

http://www.php.net/manual/en/book.dom.php

答案 1 :(得分:0)

假设PHP可以读取和写入文件,您只需要XML parserregular expression<pagedt>的内部内容相匹配,如下所示:

$fcontent=file_get_contents("file.xml");
$content=array();
preg_match("/^(.*<pagedt>)(.*)(</pagedt>.*)\$/", $fcontent, $content);
//do your stuff on $content[2], which contains what's between <pagedt> and </pagedt>
file_put_contents("file.xml", $content[1].$content[2].$content[3]);

您也可以使用strstr之类的String functions,或strpossubstr,而不是正则表达式。但那并不好玩;)