-2

私はここで小さな問題に取り組んでいます:

xml データを生成する php ファイルがあります。

$requestXmlBody .= "<Version>$compatabilityLevel</Version>";

これで、上位の php コードからプルされた変数があり、HTML も生成されます

$requestXmlBody .= 
    '<Description>
        <![CDATA[
            <!DOCTYPE html>
            <html>
                <head>
                </head>
                <body>
                    <script type="text/javascript">
                        <!--some JS-->
                    </script>
                    <img src="http://www.myserver.com/pic.jpg" class="etalage_thumb_image" />
                </body>
            </html>
        ]]>
    </Description>';

奇妙なことに、変数と HTML コードを混在させることはできません。ご覧のとおり、HTML には CDATA を使用しています。固定リンクではなく、画像名に変数を使用したい。したがって、コードは次のようになります

$requestXmlBody .= '<Description>
    <![CDATA[
        <!DOCTYPE html>
        <html>
            <head>
            </head>
            <body>
                <script type="text/javascript">
                    <!--some JS-->
                </script>
                <img src="$imagelink" class="etalage_thumb_image" />
            </body>
        </html>
    ]]>
</Description>';

しかし、これはうまくいきません。私はこれを試しました

$requestXmlBody .= '<Description>
    <![CDATA[
        <!DOCTYPE html>
        <html>
            <head>
            </head>
            <body>
                <script type="text/javascript">
                    <!--some JS-->
                </script>
                <img src="]]>$imagelink<![CDATA[" class="etalage_thumb_image" />
            </body>
        </html>
]]>
</Description>';

しかし、これもうまくいきません。私はphp変数(セッションbtwから取得したもの)をJS変数に引き渡して、それをdocument.writeに含めようとさえしました

まだ成功していません。

これはうまくいくだろう

$requestXmlBody .= '<Description>
    $imagelink
</Description>';

ただし、上記のように、生成された HTML コードと一緒ではありません。

どんな助けでも大歓迎です。

ありがとう

4

2 に答える 2

0

個別の懸念。一度に複数のことをしないでください。埋め込まれた HTML を独自の変数に分割すると、はるかに簡単になります。

XML コンテキストから HTML 文字列を「解放」するとすぐに、問題がまだ存在することがわかります。これは、補間を妨げる単一引用符で文字列を引用することによって発生します。変数を直接埋め込むのではなく、文字列連結を使用する必要があります。

$description = '<!DOCTYPE html>
    <html>
        <head>
        </head>
        <body>
            <script type="text/javascript">
                <!--some JS-->
            </script>
            <img src="' . $imagelink . '" class="etalage_thumb_image" />
        </body>
    </html>';

$requestXmlBody .= '<Description>
    <![CDATA[' . $description . ']]>
</Description>';

CDATA セクションはネストできないため、HTML 文字列に CDATA セクション自体が含まれていないことを確認してください。

于 2013-06-17T11:33:25.560 に答える
0

最善の方法は、 writeCDataメソッドを使用することです。

$link= 'link goes here';
$imagelink = '<img src="'.$link.'" /> ';

// serve xml doc as xml
header('Content-type: application/xml');

// set up the document
$xml = new XmlWriter();
$xml->openMemory();
$xml->startDocument('1.0', 'UTF-8');
$xml->startElement('description');

// CData output
$xml->writeCData($imagelink);
$xml->endElement();

// end the document and output
$xml->endElement();
echo $xml->outputMemory(true);
于 2013-06-17T08:51:28.147 に答える