在PHP中生成包含HTML的XML-变量问题
我在这里遇到了一个小问题: 我有一个生成xml数据的php文件在PHP中生成包含HTML的XML-变量问题,php,html,xml,Php,Html,Xml,我在这里遇到了一个小问题: 我有一个生成xml数据的php文件 $requestXmlBody .= "<Version>$compatabilityLevel</Version>"; $requestXmlBody.=“$compatibilitylevel”; 现在有了从上面的php代码中提取的变量,也生成了HTML $requestXmlBody .= '<Description> <![CDATA[
$requestXmlBody .= "<Version>$compatabilityLevel</Version>";
$requestXmlBody.=“$compatibilitylevel”;
现在有了从上面的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>';
$requestXmlBody.=
'
]]>
';
奇怪的是,我不能混合变量和HTML代码。
如您所见,我使用CDATA作为HTML。我想使用一个变量作为图像名称,而不是固定链接。所以代码应该是这样的
$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.='
]]>
';
但这根本不起作用。我试过这个
$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>';
$requestXmlBody.='
$imagelink最好的方法是使用该方法
$link='link就在这里';
$imagelink='';
//将xml文档作为xml服务
标题('Content-type:application/xml');
//设置文档
$xml=newXMLWriter();
$xml->openMemory();
$xml->startDocument('1.0','UTF-8');
$xml->startElement('description');
//CData输出
$xml->writeCData($imagelink);
$xml->endElement();
//结束文档并输出
$xml->endElement();
echo$xml->outputMemory(true);
独立关注点。不要同时做几件事。如果您将嵌入的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>';
$description=”
';
$requestXmlBody.='
';
确保HTML字符串本身不包含CDATA节,因为CDATA节不能嵌套。您的字符串似乎位于“…”之间
pair(单引号),在这种情况下,php不会像字符串那样插入变量,而“
(双引号)会插入变量。这可能与您的问题有关吗?非常聪明的主意!这对我很有效:)谢谢
$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);
$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>';