Php 将XML中的URL特殊字符传递给curl
我有一个包含url变量的XML文件,该url变量包含特殊字符,如&、=等 我有两个问题: 由于XML中不允许使用特殊字符,我应该如何输入URL?我应该对url进行编码,然后放入XML文件吗 假设我对url进行编码并将其放入XML文件中,然后读入php脚本Php 将XML中的URL特殊字符传递给curl,php,xml,curl,Php,Xml,Curl,我有一个包含url变量的XML文件,该url变量包含特殊字符,如&、=等 我有两个问题: 由于XML中不允许使用特殊字符,我应该如何输入URL?我应该对url进行编码,然后放入XML文件吗 假设我对url进行编码并将其放入XML文件中,然后读入php脚本 $fxml = simplexml_load_file("mylist.xml"); $fxml -> getName(); foreach($fxml->children() as $mylist) {
$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>
SISC
http://epubs.siam.org/action/showFeed?ui=0&mi=3chvf9&;ai=s0&;jc=sjnaam&;类型=etoc&;提要=rss
请注意,我已将URL替换为编码形式,其中原始的&被其代码替换。我还尝试不使用urldecode,但我只正确地获得echo$url
如果我将url复制粘贴到curl_init($url)中的单引号下,那么一切都可以正常工作
但是,当我对url进行编码并将其放在XML中,然后进行解码并将其放在curl_init($url)中时,它就不起作用了
当我回显解码后的$url(见上文)时,就会显示正确的url列表。我做错了什么?
我阅读了相关文章,但无法解决这个问题。为了举例,让我们使用
&
如果希望在URL的数据中包含&
(与指示新查询字符串键/对的开始相反)。然后,在将其添加到URL之前,需要对其进行URL编码(如%26
)
如果希望在XML文档的数据中包含&
(例如,如果数据是带有查询字符串的URL),则需要对其进行XML编码(如&;
)。您应该使用一个XML库(而不是字符串攻击或模板化)来构建XML,库将为您处理它
在将XML用作URL之前,您应该不必须
urldecode
您从XML中获取的数据。为了示例起见,让我们使用&
如果希望在URL的数据中包含&
(与指示新查询字符串键/对的开始相反)。然后,在将其添加到URL之前,需要对其进行URL编码(如%26
)
如果希望在XML文档的数据中包含&
(例如,如果数据是带有查询字符串的URL),则需要对其进行XML编码(如&;
)。您应该使用一个XML库(而不是字符串攻击或模板化)来构建XML,库将为您处理它
在将XML用作URL之前,您应该不必须
urldecode
从XML中取出的数据。还没有成功。我在上面添加了XML文件。我使用了一个转换器将&更改为XML代码。我试着不使用urldecode,但还没有成功。如果我在curl_init中复制粘贴回显的$url,一切都会正常工作。你不需要urldecode。我怀疑数据中的URL周围可能有空格。是的,你知道了。在我的XML中,我编写了url,在三行中,这导致url出现空白。一旦我把所有的url_链接都放在一行,一切都正常了。谢谢!PS:我想把url保持在单独的行上,以保持清晰和易于复制粘贴(在emacs中)。还没有成功。我在上面添加了XML文件。我使用了一个转换器将&更改为XML代码。我试着不使用urldecode,但还没有成功。如果我在curl_init中复制粘贴回显的$url,一切都会正常工作。你不需要urldecode。我怀疑数据中的URL周围可能有空格。是的,你知道了。在我的XML中,我编写了url,在三行中,这导致url出现空白。一旦我把所有的url_链接都放在一行,一切都正常了。谢谢!PS:我想把url保持在单独的行上,以便清晰和方便地复制粘贴(在emacs中)。