2014-06-17 22 views
0

我需要解析字符串:PHP:如何解析一個simil - XML字符串?

<RESPONSE> 
<status>200</status> 
<credits>100.00</credits> 
</RESPONSE> 

看來XML,但我認爲事實並非如此。實際上,沒有其他標籤或其他標籤。

我需要分析和提取,這樣我就可以打印輸出,例如,

"<p>Available credits: '.$credits.'</p>" 

當然,我試過的SimpleXMLElement,但它不承認XML。

你能幫我嗎?

謝謝

+0

確實,該XML無效; ''沒有關閉。確保獲得正確的XML或在XML錯誤時捕獲異常。 –

+0

我的錯誤,但我從Web服務接收到的simil-XML,我無法改變它。我只需要解析以實現我的目標。謝謝 – sineverba

+0

然後,您的SimpleXMLElement代碼是什麼? –

回答

1

你的XML是有效的,但缺乏XML頭。基本上,在添加標題後,您應該可以使用SimpleXML:

$xml = "<?xml version='1.0' standalone='yes'?>\n" . $similXML; 

$response = new SimpleXMLElement($xml); 

echo $response->credits; 
+0

謝謝。實際上,添加標頭一切正常。但是,我還有一個問題。我從CURL調用中獲得$ similXML,並在最後添加了PHP頭......我不能把它放在前面:(這是我的代碼:$ header ='<?xml version =「1.0」encoding =「utf- 8" >';? \t $ CH = curl_init(); \t curl_setopt($ CH,CURLOPT_URL,$ postUrl); \t curl_setopt($ CH,CURLOPT_POST,1); \t curl_setopt($ CH,CURLOPT_POSTFIELDS,$字段); \t $響應= curl_exec($ CH); \t $結果= $頭$響應; \t的print_r($結果); – sineverba

+0

當我的print_r($結果),I獲得第一從CURL的響應和...( – sineverba

+1

)你缺少curl_setopt($ ch,CURLOPT_RETU RNTRANSFER,true);在curl_exec()之前。實際上,您看到由cURL打印的$ similXML,而不是您的print_r(),因爲$ response是空的(僅布爾值爲真)。 –

0

如果你只需要幾個靜態值,你可以自己提取它們。

爲了讓你會做的學分:

if (preg_match('/<credits>([0-9.]+)<\/credits>/', $response, $matches) { 
    $credits = $matches[1]; 
}