我已经尝试按照this thread中的建议,但我似乎仍然无法从原始XML CURL响应中获取可用的数组(实际上我只想从输出中获取几位数据)。 ..
这是我的代码:
echo "Curl started...<br />\n\n";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$target_url);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
$response=curl_exec ($ch);
curl_close ($ch);
$response_xml = simplexml_load_string($response);
$system_ref = $response_xml->OBJECT->SYSTEMREFERENCE;
echo "Curl finished...<br />\n\n";
print_r($response_xml);
这是原始响应,它被送入$ response:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE IAD.IF.OBJECTRESPONSE SYSTEM "http://www.someplace.com/dtd/IADIF-objectresponse.dtd">
<IAD.IF.OBJECTRESPONSE>
<HEAD>
<PARTNER>somepartner</PARTNER>
<UPLOAD_REFERENCE/>
<IMPORTTYPE>STORING AD</IMPORTTYPE>
<PROCESSEDTIME>2013.05.17 11:29:29</PROCESSEDTIME>
<SOURCE>originalsource_342423424.xml</SOURCE>
</HEAD>
<OBJECT STATUS="ok">
<ORDERNO/>
<VERSION></VERSION>
<USERREFERENCE></USERREFERENCE>
<SYSTEMREFERENCE>34324242</SYSTEMREFERENCE>
</OBJECT>
</IAD.IF.OBJECTRESPONSE>
所以,如果我回显或print_r $响应,我得到一个原始字符串输出...但是如果我print_r $ response_xml(如上例所示),我似乎什么也得不到。
目前,我的目标是简单地将 SYSTEMREFERENCE 数据转换为变量......
有人可以提供建议吗?
PS。已经潜伏了一段时间,但这似乎是我在Stackoverflow上的第一个问题,所以请放轻松我。希望我做得对。 :)
答案 0 :(得分:0)
最快的方法是:
preg_match( '/<SYSTEMREFERENCE>(.+?)<\/SYSTEMREFERENCE>/i', $str, $res );
print_r( $res );
另外看看PHP DOM模块,但上面是最快的。
答案 1 :(得分:0)
您自己的代码已经拥有您需要的代码,值在您的$system_ref
变量中,只需回显它。我已根据您的代码片段编写此代码段,并输出您之后的结果:
<?php
$response = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE IAD.IF.OBJECTRESPONSE SYSTEM "http://www.someplace.com/dtd/IADIF-objectresponse.dtd">
<IAD.IF.OBJECTRESPONSE>
<HEAD>
<PARTNER>somepartner</PARTNER>
<UPLOAD_REFERENCE />
<IMPORTTYPE>STORING AD</IMPORTTYPE>
<PROCESSEDTIME>2013.05.17 11:29:29</PROCESSEDTIME>
<SOURCE>originalsource_342423424.xml</SOURCE>
</HEAD>
<OBJECT STATUS="ok">
<ORDERNO />
<VERSION />
<USERREFERENCE />
<SYSTEMREFERENCE>34324242</SYSTEMREFERENCE>
</OBJECT>
</IAD.IF.OBJECTRESPONSE>
XML;
$response_xml = new SimpleXMLElement($response);
$system_ref = $response_xml->OBJECT->SYSTEMREFERENCE;
echo $system_ref;
34324242