如何在PHP中使用echo输出HTML标签

14
我在发布之前已经做了以下事情: 如何在PHP中回显HTML? 但我仍然无法使其工作。 我试图回显这个:
<div>
    <h3><a href="#">First</a></h3>
    <div>Lorem ipsum dolor sit amet.</div>
    </div>
<div>

但我仍然找不到让标签""和''消失的方法。我该怎么做?


非常感谢大家!我会看看哪个答案最适合并得到了最多的投票(以接受一个)。再次感谢您们的帮助! - Trufa
11个回答

25
<?php

echo '<div>
 <h3><a href="#">First</a></h3>
 <div>Lorem ipsum dolor sit amet.</div>
</div>
<div>';

?>

只需将其用单引号括起来即可。


2
请记住,在您的HTML中,如果有任何 ',请使用反斜杠进行转义,例如 '。 - Kamil Szot
这对我不起作用。我写了以下代码 echo '<a href="google.com"><img src="newone.jpg" /></a>'; 它输出带有双引号的"</a>"。 - IshaS

12

尝试使用heredoc解决方案:

echo <<<HTML
<div>
    <h3><a href="#">First</a></h3>
    <div>Lorem ipsum dolor sit amet.</div>
    </div>
<div>
HTML;

8
使用第一个给出的机制就可以做到这一点。
<?php
  ...
?>
<div>
 <h3><a href="#">First</a></h3>
 <div>Lorem ipsum dolor sit amet.</div>
</div>
<div>
<?php
  ...
?>

5

您需要转义 ",这样PHP才不会将其识别为PHP代码的一部分。您可以使用转义字符 \ 来实现。

因此,您的代码应该像这样:

echo
    "<div>
        <h3><a href=\"#\">First</a></h3>
        <div>Lorem ipsum dolor sit amet.</div>
    </div>
    <div>"

4
如果您想输出大量HTML,建议考虑使用heredoc或nowdoc语法。这样可以避免转义字符的繁琐操作。请参考heredocnowdoc语法编写字符串。
echo <<<EOD
You can put "s and 's here if you like.
EOD;

同时需要注意的是,由于PHP是一种嵌入式语言,您可以将它添加在HTML内容之间,而无需打印任何标签。

<div>
    <p>No PHP here!</p>
    <?php
    $name = "Marcel";
    echo "<p>Hello $name!</p>";
    ?>
</div>

如果你只想输出一个变量,你应该使用简写的输出标签<?=$var?>。这相当于<?php echo $var; ?>


4

将HTML与PHP分离是最好的方法。这样做更清晰易懂,也更容易进行调试。

<?php
  while($var)
  {
?>

     <div>
         <h3><a href="User<?php echo $i;?>"><?php echo $i;?></a></h3>
         <div>Lorem ipsum dolor sit amet.</div>
     </div>

<?php
  $i++;
  }
?>

2

您有多种选择。其中之一是将PHP作为模板引擎:

<?php 
  // Draw the page
?>
<div>
  <h3><a href="#">First</a></h3>
  <div>Lorem ipsum dolor sit amet.</div>
</div>
<?php
  // Done drawing.
?>

另一种方法是使用单引号,这样您可以将双引号留空不引用,并且还支持文字中的换行符:

<?php
  echo '<div>
  <h3><a href="#">First</a></h3>
  <div>Lorem ipsum dolor sit amet.</div>
</div>';
?>

另一种方法是使用HEREDOC,它不会改变双引号,支持换行,并且也可以展开其中的任何变量:

<?php
  echo <<<EOS
<div>
  <h3><a href="#">First</a></h3>
  <div>Lorem ipsum dolor sit amet.</div>
</div>
EOS;
?>

1
你可以将'<'替换为&lt;,将'>'替换为&gt;。例如:
echo "&lt;div&gt;";

输出将在 <div> 中显示。
对于较长的字符串,可以编写一个函数,例如:
function example($input) {
    $output = str_replace('>', '&gt;', str_replace('<', '&lt;', $html));
    return $output;
}

echo example($your_html);

不要忘记加上反斜杠href=\"#\",或者使用单引号href='#',也可以在函数中使用str_replace更改。


0

不需要使用echo,只需使用标签<plaintext>:

<plaintext>
    <div>
        <h3><a href="#">First</a></h3>
        <div>Lorem ipsum dolor sit amet.</div>
    </div>

应该不是缺少结束标签吗? - Peter Mortensen
1
<plaintext> 标签已经过时。虽然它在某些浏览器中仍然可以使用,但是由于它可能随时被移除,因此不建议使用。请改用 <pre> 标签。 - smolo

0

这也可以与双引号一起很好地工作。要使用双引号echo任何html_tag,我们只需要记住一件事,不要在中间使用任何其他双引号(")

<?php
    echo "
    <div>
        <h3><a href='https://dev59.com/WW865IYBdhLWcg3wNLw7'>First</a></h3>
        <div>Lorem ipsum dolor sit amet.</div>
        </div>
    <div>";
?>

注意这里 PHP echo 中的链接被包含在单引号中。这是在使用双引号时应该采取的预防措施。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接