Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将XML中的URL特殊字符传递给curl_Php_Xml_Curl - Fatal编程技术网

Php 将XML中的URL特殊字符传递给curl

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) {

我有一个包含url变量的XML文件,该url变量包含特殊字符,如&、=等

我有两个问题:

由于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&amp;mi=3chvf9&amp;ai=s0&amp;jc=sjnaam&amp;type=etoc&amp;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中)。