【问题标题】:php variable inside echo 'html code'echo 'html 代码' 中的 php 变量
【发布时间】:2013-11-04 17:42:15
【问题描述】:

我有 php 文件 index.php

在这个文件中使用我正在做的html代码:

index.php

echo '
<div>
<a class="fragment" href="">
<div>';

在 href 我想输入一些 php 变量的值,即$url 怎么做?

这是正确的方法吗?

 <a class="fragment" href="<?php echo $url; ?>">

【问题讨论】:

    标签: php html


    【解决方案1】:

    您可以通过结束并重新开始来连接字符串:

    echo '
    <div>
    <a class="fragment" href="' . $url . '">
    <div>';
    

    虽然我个人更喜欢停止 PHP 标记并重新启动它们(如果我有很多 HTML),因为我的 IDE 不会语法高亮 HTML,因为它是一个字符串:

    ?>
        <div>
            <a class="fragment" href="<?php echo $url; ?>">link</a>
        </div>
    <?php
    

    【讨论】:

    • 如果 div 是用 php 从不同的 php 文件导入的怎么办?对我来说,它只是在 html 标签中输出“echo ...”作为文本。
    • @DaniSpringer 没有区别 - 您可能使用了错误的包含引号,或者您正在阅读 php 文件而不是使用 includerequire 加载其内容。
    • 啊哈。我正在尝试在页面本身中导入元标记并定义填充它们的值。但是,当我在要导入的文件中写入变量名时,我收到一条错误消息,指出这些变量未定义。
    • @DaniSpringer Global variables 与将变量粘贴到 URL 中完全无关。
    【解决方案2】:

    由于您要打印多行 HTML,因此我建议您使用 heredoc

    echo <<<HTML
    <div>
    <a class="fragment" href="$url">
    <div>
    HTML;
    

    HTML 可以是任何东西,只要您在开头和结尾都使用相同的标签。但是,结束标记 必须 位于其自己的行上,没有任何空格或制表符。话虽如此,特别是 HTML 还具有一些编辑器(例如 VIM)识别它并在文本上应用 HTML 语法着色的好处,而不是像普通字符串那样仅仅着色它。

    如果你想使用数组或类似的,你可以使用{} 转义变量:

    echo <<<HTML
    <div>{$someArray[1]}</div>
    HTML;
    

    【讨论】:

      【解决方案3】:

      如果您将 php 直接回显到 html 中,我喜欢这样做

      <div><?=$variable?></div>
      

      比写出整个事情要短得多(php echo blah blah)

      如果你是直接在 php 中编写 html,那么有几个选项

      $var = '<div>'.$variable.'</div>';   // concatenate the string
      $var = "<div>$variable</div>";       // let php parse it for you.  requires double quotes
      $var = "<div>{$variable}</div>";     // separate variable with curly braces, also requires double quotes
      

      【讨论】:

        【解决方案4】:

        这样做

        <?php
        $url='http://www.stackoverflow.com';
        echo "<div><a class='fragment' href='$url' /></div>";
        

        【讨论】:

        • $url 周围加上单引号,我会投赞成票,因为我喜欢插值而不是连接。
        • @Barmar,PHP 也可以解释引号内的变量对吗?
        • @Barmar PHP 不会用单引号扩展变量。
        • @h2ooooooo 双引号内的单引号不会阻止变量扩展。
        • @Barmar 对不起 - 误解了你。我以为你希望他用单引号将整个内容括起来。时间不早了:-)
        【解决方案5】:

        如果你想保持 echo 语句,你可以这样做

        echo '<a class="fragment" href="'.$url.'"><div>';
        

        echo "<a class=\"fragment\" href=\"$url\">";
        

        第一个更适合表演,恕我直言,可读性也更好。

        【讨论】:

        • 呃,为什么人们更喜欢\"而不是使用单引号?
        【解决方案6】:

        如果您想输入/输出带有嵌入变量的大块 HTML,您可以使用 Heredocs 来简化流程:

        echo <<<_EOI_
        <div>
           <a class="fragment" href="$url">
        <div>
        _EOI_;
        

        您不必担心转义引号、不断连接,或者像人们那样在&lt;?php echo $var; ?&gt; 中出现丑陋的插入和退出。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-04-23
          • 1970-01-01
          • 2011-01-10
          • 1970-01-01
          • 2010-12-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多