将 XML 中的 URL 特殊字符传递到卷曲


pass URL special characters in XML to curl

我有一个XML文件,其中包含一个包含特殊字符(如&,=等)的url变量

我有两个问题:

一个。由于 XML 中不允许使用特殊字符,因此我应该如何输入 URL?我应该对 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&amp;mi=3chvf9&amp;ai=s0&amp;jc=sjnaam&amp;type=etoc&amp;feed=rss                                                                               
            </url>
        </mylist>
    </feed>

请注意,我已经以编码形式替换了URL,其中原始和被其代码替换。我也尝试不使用 urldecode,但我只能正确获得回声$url。

如果我将网址复制粘贴在单引号下的 curl_init($url ),一切都有效。

但是当我对 url 进行编码并将其放入 XML 中并解码并放入 curl_init($url )时,它不起作用。

当我回显解码的$url(见上文)时,我会显示正确的 url 列表。我做错了什么?我阅读了密切相关的帖子,但无法解决这个问题。

为了举例起见,

让我们使用 &

如果您希望 URL 的数据&(而不是指示新查询字符串键/对的开始)。然后,您需要在将其添加到URL之前对其进行URL编码(如%26)。

如果您希望在XML文档的数据中&(例如,如果数据是带有查询字符串的URL),则需要对其进行XML编码(如&amp;)。您应该使用 XML 库(而不是字符串抨击或模板化)构造 XML,库将为您处理它。

在将 XML 用作 URL 之前,您不必urldecode从 XML 中取出的数据。