-1

在一个 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 方法,如果有的话。此外,我不打算关闭短标签,因为我在此页面中到处使用它们中的许多。


回显整行,这比您的提议更具可读性。

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

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

4

3 回答 3

7

回显整行,这比您的提议更具可读性。

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

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

于 2013-09-07T18:53:33.120 回答
1

只需使用指令禁用短打开标签。确切的机制取决于您如何运行 PHP。short_open_tag


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

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

<?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>
于 2013-09-07T19:03:20.967 回答
-1

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

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

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

第二行不是字符串,而是可以直接在 XHP 中回显的内容。我认为从该站点复制粘贴文档样本没有多大意义,如果您觉得它有趣,请继续尝试。这需要时间来适应,但结果是更干净的 PHP 代码也更安全且不易出错。

于 2013-09-07T18:59:05.127 回答