从php读取XML文件

从php读取XML文件,php,xml,Php,Xml,我正在使用以下代码从电子邮件下载和读取XML文件: <?php require_once("attachmentread.class.php"); $host="{imap.gmail.com:993/imap/ssl}INBOX"; // pop3host $login="axxxxxxxx@gmail.com"; //pop3 login $password="whxxxxxxx"; //pop3 password $savedirpath="" ; // attachement wi

我正在使用以下代码从电子邮件下载和读取XML文件:

<?php
require_once("attachmentread.class.php");
$host="{imap.gmail.com:993/imap/ssl}INBOX"; // pop3host
$login="axxxxxxxx@gmail.com"; //pop3 login
$password="whxxxxxxx"; //pop3 password
$savedirpath="" ; // attachement will save in same directory where scripts run othrwise give abs path
$jk=new readattachment(); // Creating instance of class####
$jk->getdata($host,$login,$password,$savedirpath); // calling member function


$xml=simplexml_load_file("/data/www/Message14.xml");
$message=$xml->TEMPLATE;
$mobile= $xml->MESSAGES->MESSAGE->RECIPIENT_NUM;

$mobile1=str_replace("050", "97150", $mobile); 
?>
模板;
$mobile=$xml->MESSAGES->MESSAGE->RECIPIENT\u NUM;
$mobile1=str_替换(“050”、“97150”、“$mobile”);
?>
我最初的Message14.xml如下所示

<?xml version="1.0" ?>
<DOCUMENT><VERSION>2.0</VERSION><INVOICE_NUM>30</INVOICE_NUM><PIN>14567894</PIN><MESSAGE_TYPE>INSTANT_SEND</MESSAGE_TYPE><COUNTRY_CODE>971</COUNTRY_CODE><TEMPLATE> Hi xxxxxx
</TEMPLATE><DATABASEINFO><DATABASE_NAME>Sys2000</DATABASE_NAME><CLINIC_ID>1</CLINIC_ID></DATABASEINFO><MESSAGES><MESSAGE><SEND_DATE>2013-07-02</SEND_DATE><ENTITY_ID>0</ENTITY_ID><RECIPIENT_NUM>xxxxxxxxx</RECIPIENT_NUM><MESSAGE_PARAMS/></MESSAGE></MESSAGES><CSUM>dcb4855eccf730e3668a386acaaf7d60</CSUM></DOCUMENT>
?xml version=3D3D"1.0" ?>
<DOCUMENT><VERSION>2.0</VERSION><INVOICE_NUM>30</INVOICE_NUM><PIN>1456789=
=3D
4</PIN><MESSAGE_TYPE>INSTANT_SEND</MESSAGE_TYPE><COUNTRY_CODE>971</COUNTR=
=3D
Y_CODE><TEMPLATE> Hi xxxxxxxxx
</TEMPLATE><DATABASEINFO><DATABASE_NAME>Sys2000</DATABASE_NAME><CLINIC_ID=
=3D
>1</CLINIC_ID></DATABASEINFO><MESSAGES><MESSAGE><SEND_DATE>2013-07-02</SE=
=3D
ND_DATE><ENTITY_ID>0</ENTITY_ID><RECIPIENT_NUM>0xxxxxxxxx</RECIPIENT_NUM>=
=3D
<MESSAGE_PARAMS/></MESSAGE></MESSAGES><CSUM>dcb4855eccf730e3668a386acaaf7=
=3D
d60</CSUM></DOCUMENT>

2.03014567894即时发送971 Hi xxxxxx
Sys200012013-07-020xxxxxxxxxdcb4855eccf730e3668a386acaaf7d60
但现在它包括3D,等等,它看起来像这样

<?xml version="1.0" ?>
<DOCUMENT><VERSION>2.0</VERSION><INVOICE_NUM>30</INVOICE_NUM><PIN>14567894</PIN><MESSAGE_TYPE>INSTANT_SEND</MESSAGE_TYPE><COUNTRY_CODE>971</COUNTRY_CODE><TEMPLATE> Hi xxxxxx
</TEMPLATE><DATABASEINFO><DATABASE_NAME>Sys2000</DATABASE_NAME><CLINIC_ID>1</CLINIC_ID></DATABASEINFO><MESSAGES><MESSAGE><SEND_DATE>2013-07-02</SEND_DATE><ENTITY_ID>0</ENTITY_ID><RECIPIENT_NUM>xxxxxxxxx</RECIPIENT_NUM><MESSAGE_PARAMS/></MESSAGE></MESSAGES><CSUM>dcb4855eccf730e3668a386acaaf7d60</CSUM></DOCUMENT>
?xml version=3D3D"1.0" ?>
<DOCUMENT><VERSION>2.0</VERSION><INVOICE_NUM>30</INVOICE_NUM><PIN>1456789=
=3D
4</PIN><MESSAGE_TYPE>INSTANT_SEND</MESSAGE_TYPE><COUNTRY_CODE>971</COUNTR=
=3D
Y_CODE><TEMPLATE> Hi xxxxxxxxx
</TEMPLATE><DATABASEINFO><DATABASE_NAME>Sys2000</DATABASE_NAME><CLINIC_ID=
=3D
>1</CLINIC_ID></DATABASEINFO><MESSAGES><MESSAGE><SEND_DATE>2013-07-02</SE=
=3D
ND_DATE><ENTITY_ID>0</ENTITY_ID><RECIPIENT_NUM>0xxxxxxxxx</RECIPIENT_NUM>=
=3D
<MESSAGE_PARAMS/></MESSAGE></MESSAGES><CSUM>dcb4855eccf730e3668a386acaaf7=
=3D
d60</CSUM></DOCUMENT>
?xml版本=3D3D“1.0”>
2.0301456789=
=3D
4即时发送971 Hi xxxxxxxxx
Sys200012013-07-02000XXXXXXXXX=
=3D
dcb4855eccf730e3668a386acaaf7=
=3D
d60
有谁能告诉我如何下载不包含3d的原始文件。谢谢“3d”指的是等号字符代码。将其包含在XML代码中表示出现了双重编码或其他编码问题。您可以使用PHP的quoted\u printable\u decode函数来解决此问题

您可以尝试:
file\u put\u contents(“/data/www/Message14.xml”),quoted\u printable\u decode(file\u get\u contents(“/data/www/Message14.xml”)


在使用simplexml\u load\u file函数之前,请将其放在适当的位置。

只要模式保持不变,XML文档的格式设置除了额外的空白之外,应该不会影响处理。我不知道你在问什么。新字符添加到xml文件中,如3D3D和=3DIt似乎是使用“引用的可打印”编码的,而不是文件中所述的UTF-8。尝试使用引用的可打印解码功能,可能会有所帮助。我删除了编码并尝试了,它可能是相同的3D3副本,嗯
simplexml\u load\u file
返回一个对象,但是
quoted\u printable\u decode
的第一个参数必须是一个字符串。然后在simplexml\u load\u file字符串之前,放入类似file\u put\u contents(“/data/www/Message14.xml”,quoted\u printable\u decode(file\u get\u contents(“/data/www/Message14.xml”))的内容;