1

&、= などの特殊文字を含む URL 変数を含む XML ファイルがありました。

2 つの質問があります。

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 を(として) エンコードする必要があります。

XML ドキュメントのデータに が必要な場合&(たとえば、データがクエリ文字列を含む URL の場合)、XML エンコードする必要があります (として&amp;)。XML ライブラリを使用して XML を構築する必要があり (文字列のバッシングやテンプレート化ではありません)、ライブラリがそれを処理します。

XML を URL として使用する前に、XMLからデータを取り出す必要はありません。urldecode

于 2013-01-21T14:41:52.967 に答える