避免PHP呈现“<! - ?”作为自我开放的标签 - >

时间:2013-09-07 18:50:17

标签: php

在php文件中,我有以下

<script id="svg-xml" type="text/template">
    <?xml version="1.0" standalone="no"?>
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
    <etc />
</script>
XML声明开头的

<? 呈现为PHP开始标记的缩写形式。我的解决方案是让PHP回显<符号并像<?='<'?>?xml version=...一样使用它。那里有更优雅的其他/更好的选择吗?

[编辑] 我正在寻找替代PHP方法,如果有的话。此外,我不打算关闭短标签,因为我在这个页面中使用了很多标签。

3 个答案:

答案 0 :(得分:7)

回应整行,这比你的命题更具可读性。

<?php echo '<?xml version="1.0" standalone="no"?>';?>

您还可以在配置中禁用短标签。 (显然,如果你依赖其他短标签,这不是一个解决方案。

答案 1 :(得分:1)

只需使用short open tags停用short_open_tag directive即可。精确的机制取决于你如何运行PHP。


是的,我刚看到你的编辑不想使用它。然后,这个问题变得主观,因为它取决于你对更优雅意味着什么的想法。

如果使用变量/常量更优雅:

<?php

define('XML_INIT', '<?xml');

?>
<script id="svg-xml" type="text/template">
    <?=XML_INIT?> version="1.0" standalone="no"?>
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
    <etc />
</script>

如果使用外部文件更优雅:

<script id="svg-xml" type="text/template">
<?php readfile('./template.svg'); ?>
</script>

如果使用heredoc更优雅:

<script id="svg-xml" type="text/template">
<?php echo <<<EOM
    <?xml version="1.0" standalone="no"?>
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
    <etc />
EOM
?>
</script>

答案 2 :(得分:-1)

您似乎专注于使您的PHP代码尽可能可读。 看看XHP,它在Facebook内部使用,使PHP更具可读性。

以下是一些有效的XHP代码示例(它是PHP的扩展,因此您可以在PHP中执行任何操作):

<?php
$href = 'http://www.facebook.com';
echo <a href={$href}>Facebook</a>;

第二行不是字符串,而是可以直接在XHP中回显的字符串。 我没有看到来自网站的复制粘贴文档样本有多大意义,如果你觉得它很有意思,请继续尝试。 需要时间来习惯,但结果是更清晰的PHP代码,它也更安全,更容易出错。