剥离 XML 标记的 curl 和 htmlentities


Curl and htmlentities stripping XML tags

所以我正在开发一个php脚本,它使用Curl和POST方法将信息传递给服务器,然后以XML的形式从该服务器获取信息。

我使用 curl 获取信息并将其加载到变量 ($result( 中,然后我想将其加载到 simpleXML 中并存储在变量$routeinfo中。但是,当我执行var_dump($routeinfo(时,似乎没有存储任何数据。我已经通过回显确认$result中存在数据。

我还认为这可能是由于当我回显$result时 XML 未显示在浏览器中(但如果我检查源代码,它就在那里(。只是为了检查我是否使用了 html实体,但这会导致很多错误,因为它被解释为等效<html。无论如何,我已经达到了一个僵局,并且已经记录了几个小时来实现不同的建议,但无济于事。我的代码在下面,我将不胜感激可以提供的任何帮助。>

<?php 
//retrieve form data in a variable
$input = $_POST['stopNo'] ;
//declare other variables needed
$api_key = 'xxxkey' ;
$api_id = 12345 ;
$url = 'url to send data to' ; 
$querystring = "appID=". $api_id . "&apiKey=" . $api_key . "&stopNo" . $input ;
$data = urlencode($url) ; 

//curl using
$ch = curl_init() ; 
//set up curl
curl_setopt($ch, CURLOPT_URL, 'urlsendingdatato');
curl_setopt($ch, CURLOPT_POSTFIELDS, 'appID='.urlencode($api_id).'&apiKey=' .urlencode($api_key) . '&stopNo=' .urlencode($input) );
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0 ) ; 
curl_setopt($ch, CURLOPT_ENCODING, "UTF-8") ;
curl_setopt($ch, CURLOPT_BINARYTRANSFER , TRUE) ;

//execute and gather info
$result = curl_exec($ch) ; 
//close connection
curl_close($ch) ;
//format data 
//ent at the moment serves no purpose doesn't render the information correctly
$ent = htmlentities($result);
$routeinfo = new SimpleXMLElement($result) ;
//print data
echo "<br> $result <br>" ; 
var_dump($routeinfo) ;

?> 

创建 simpleXML 对象时似乎出现了问题。因此,您可以尝试使用定义良好的 XML 文件创建新的 simpleXMLElement 对象。如果这有效,则意味着获取的xml文件的格式不正确。

$xml="<?xml version='1.0'?><book><author>steve</author><price>200</price><name>Its my life</name></book>";
$test= new SimpleXMLElement($xml);
var_dump($test);

这对我有用!

但通常如果存在 xml 解析问题,simpleXMLElement 会抛出错误。它是否在您的案例中返回任何错误?或者您可能已经关闭了错误报告 (error_reporting(0(; (。