我在字符串中有这个html:
$html = '<obj><p>Figure 1. different (<italic>p</italic>< 0.05).</p></obj>';
然后,我在domDocument中加载它:
$doc = new DOMDocument("1.0","UTF-8");
@$doc->loadHTML($html);
然后,当我转储domDocument的内容时:
var_dump($doc->saveHTML());
我得到了:
<html><body><obj><p>Figure 1. different (<italic>p</italic></p></obj></body></html>
所以签署&lt;其余的都消失了。
知道为什么吗?
谢谢。
答案 0 :(得分:1)
解析器认为您正在打开一个新的HTML标记。请尝试使用<
。
$html = '<obj><p>Figure 1. different (<italic>p</italic>< 0.05).</p></obj>';
答案 1 :(得分:1)
嗯,html标记使用了<
,因此你发布的html字符串被浏览器解释为html。
如果要显示 literal html标记,则必须将其转义或以明确方式将其标记为预先格式化的文本:
echo "<pre>\n";
var_dump($doc->saveHTML());
echo </pre\n";
如果你想要解释html标记,但只是对单个字符进行了转义,你必须以明确的方式做到这一点,以便浏览器可以区分:
$html = '<obj><p>Figure 1. different (<italic>p</italic>< 0.05).</p></obj>';
var_dump($html);
答案 2 :(得分:1)
这将打印为xml
header("Content-type: text/xml; charset=utf-8");
$html = '<obj><p>Figure 1. different (<italic>p</italic>'. htmlspecialchars('< 0.05).') .'</p></obj>';
// Or else if you need this, then uncomment below line
//$html = htmlspecialchars('<obj><p>Figure 1. different (<italic>p</italic>< 0.05).</p></obj>');
$doc = new DOMDocument("1.0","UTF-8");
@$doc->loadHTML($html);
echo ($doc->saveHTML());