我有一个带有url变量的XML文件,其中包含特殊字符,例如&,= etc
我有两个问题:
一个。由于XML中不允许使用特殊字符,我应该如何输入URL?我应该编码网址然后放入XML文件吗?
B中。假设我编码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>
请注意,我已将编码后的网址替换为原始&amp;被其代码取代。我也尝试过不使用urldecode,但我只能正确地获得echo $ url。
如果我将curl_init($ url)中的网址粘贴到单引号下,则可以使用。
但是当我对url进行编码并将其放入XML并进行解码并将其放入curl_init($ url)时,它就不起作用了。
当我回显解码的$ url(见上文)时,我会显示正确的url列表。我究竟做错了什么 ? 我仔细阅读了相关的帖子,但无法解决这个问题。
答案 0 :(得分:1)
为了举例,让我们使用&
。
如果您想在URL的数据中使用&
(而不是指示新查询字符串键/对的开头)。然后,在将其添加到URL之前,您需要对其进行URL编码(%26
)。
如果您想在XML文档的数据中使用&
(例如,如果数据是带有查询字符串的URL),那么您需要对其进行XML编码(如&
)。您应该使用XML库构建XML(而不是字符串抨击或模板化),库将为您处理它。
在将XML用作网址之前,您应该不必须使用urldecode
数据。