1

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

我有两个问题:

A. 由于 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 但我只能正确地得到 echo $url 。

如果我将 URL 复制粘贴到 curl_init($url) 的单引号下,一切正常。

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

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

4

1 回答 1

1

让我们使用&示例。

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

如果您想&在 XML 文档的数据中使用 a (例如,如果数据是带有查询字符串的 URL),那么您需要对它进行 XML 编码(as &amp;)。您应该使用 XML 库(而不是字符串 bashing 或模板)来构建 XML,并且该库会为您处理好它。

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

于 2013-01-21T14:41:52.967 回答