我有一个带有url变量的XML文件,其中包含特殊字符,如&、=等。
我有两个问题:
答:由于XML中不允许使用特殊字符,我应该如何输入URL?我是否应该对url进行编码,然后放入XML文件?
假设我对url进行了编码,并将其放入XML文件中,然后读入php脚本。
$fxml = simplexml_load_file("mylist.xml");
$fxml -> getName();
foreach($fxml->children() as $mylist)
{
$url = $mylist -> url;
$url = urldecode(url);
echo $url;
$feed = curl_init( $url );
curl_setopt($feed, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($feed, CURLOPT_HEADER, 0);
$xml = simplexml_load_string(curl_exec($feed));
curl_close($feed);
//---------------------
//---------------------
}以下是示例XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<feed>
<mylist>
<name>
SISC
</name>
<url>
http://epubs.siam.org/action/showFeed?ui=0&mi=3chvf9&ai=s0&jc=sjnaam&type=etoc&feed=rss
</url>
</mylist>
</feed>请注意,我已经替换了编码形式的URL,其中original &被它的代码替换。我也试着不使用urldecode,但我只正确地得到了echo $url。
如果我将url复制粘贴到curl_init($url )中的单引号下,一切都会正常工作。
但是,当我对url进行编码并将其放入XML中,再解码回来并将其放入curl_init($url )中时,它不起作用。
当我回显解码的$url (见上),然后我得到正确的url列表显示。我做错了什么?我读了一些密切相关的文章,但没能解决这个问题。
发布于 2013-01-21 22:41:53
为了举例,让我们使用&。
如果您想在URL的数据中包含& (而不是指示新查询字符串键/键对的开始)。然后,在将其添加到URL之前,您需要对其进行URL编码(作为%26)。
如果您希望在XML文档的数据中包含& (例如,如果数据是带有查询字符串的URL ),则需要对其进行XML编码(作为&)。您应该使用XML库(而不是字符串重击或模板)来构造XML,该库将为您处理它。
在将XML用作之前,您不应该对从XML中取出的数据进行 urldecode。
https://stackoverflow.com/questions/14440886
复制相似问题