我有这段代码:
<?php
function start_elem($parser,$name,$attribs) {
echo "<$name>";
}
function end_elem($parser,$name)
{
echo "</$name>";
}
$parser=xml_parser_create();
xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
xml_set_element_handler($parser,"start_elem","end_elem");
$buf = '<F>';
echo xml_parse($parser,$buf,strlen($buf)==0);
预期产出:
<F>1
实际输出:
1
有谁知道为什么不在这里调用start_elem()?
PS:
php --version
PHP 5.4.4-14+deb7u7 (cli) (built: Dec 12 2013 08:42:07)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
with XCache v2.0.0, Copyright (c) 2005-2012, by mOo
比较输出中的HHVM:
<F>1
HHVM版本:
HipHop VM 3.1.0 (rel)
Compiler: tags/HHVM-3.1.0-0-g71ecbd8fb5e94b2a008387a2b5e9a8df5c6f5c7b
Repo schema: 88ae0db264d72ec2e2eb22ab25d717214aee568b
答案 0 :(得分:-1)
尝试将输出包装在htmlspecialchars
中。标签被浏览器解析并被忽略;上面的功能会将标签转换为可显示。
例如:
echo htmlspecialchars(xml_parse($parser, $buf, strlen($buf) == 0));