【问题标题】:Print HTML tags in PHP output在 PHP 输出中打印 HTML 标签
【发布时间】:2014-02-23 12:38:31
【问题描述】:

我在 php 变量中存在 HTML 标记。我想按原样打印值。这是我尝试过的。

$str = "A 'quote' is <b>bold</b>";

echo htmlentities($str);
// Outputs: A 'quote' is &lt;b&gt;bold&lt;/b&gt;

echo $str; //out puts as follows

“引号”是粗体

但我想把它打印成

 A 'quote' is <b>bold</b>

另外,有没有什么设置可以在php页面的顶部进行,这样我就不需要在每个php变量中都使用它了?

【问题讨论】:

  • 不要使用html ebtities。只需回显 $str
  • 为什么不只是echo $str
  • 如果你想逐字发送 HTML 标签,不要使用htmlentities()。如果要将标签 在浏览器中 显示为文字文本,则需要像当前一样对其进行转义。请说明你真正想要做什么
  • @Bojangles :我已经更新了我的问题以说出我想要什么
  • 不,你没有。你在用这个文本做什么?将其回显到浏览器或其他东西?

标签: php html


【解决方案1】:

随便用

 $str = "A 'quote' is <b>bold</b> ";

echo htmlspecialchars($str);

因为htmlentities 将一些字符转换为 HTML 实体。

你应该改用htmlspecialchars

它替换字符如下:

'&' (ampersand) becomes &amp;
'"' (double quote) becomes &quot; when ENT_NOQUOTES is not set.
"'" (single quote) becomes &#039; only when ENT_QUOTES is set.
'<' (less than) becomes &lt;
'>' (greater than) becomes &gt;

您可以查看php fiddle here

【讨论】:

  • 打印为A 'quote' is bold(粗体为粗体)。请阅读我的问题
  • 嘿,不要投反对票。是您没有正确发布问题,然后对其进行了编辑以使其有意义
  • 我刚刚编辑了 echo $str 输出。但我最初的问题是 A 'quote' is &lt;b&gt;bold&lt;/b&gt; 是预期的输出。我没有改变这一点。我的要求仍然是 A 'quote' is &lt;b&gt;bold&lt;/b&gt; ;请编辑您的答案以接受答案
  • echo htmlspecialchars($str);没有向浏览器输出任何内容
【解决方案2】:

这应该可行 -

$str = "A 'quote' is <b>bold</b>";
echo "<xmp>".$str."</xmp>";
//Outputs - A 'quote' is <b>bold</b>

编辑:

&lt;XMP&gt; 已被弃用,正如 cmets 中指出的那样,这似乎是它的解决方法(使用 &lt;PRE&gt; 标记和 htmlentities)-

$str = "A 'quote' is <b>bold</b>";
echo "<pre>".htmlentities($str)."</pre>";
//Outputs - A 'quote' is <b>bold</b>

【讨论】:

  • 太棒了!看来,我每次都需要为所有变量设置 ,页面开头是否有任何设置?
  • 这是一个html标签。所以一个好主意是使用一个函数,将参数作为输入字符串并返回上面的回显。
  • xmp 标签已弃用,请查看此帖子stackoverflow.com/questions/4545/what-was-the-xmp-tag-used-for
  • @Shiva :那么它的替代品是什么?
  • @Shiva 它很旧,但它似乎一直对我有用。甚至你的帖子也是这么说的(它的替代品也有争议)。但你是对的,它已被弃用。
【解决方案3】:

如果要打印 HTML,请不要使用 htmlentities

如果这是用户输入,您仍然应该过滤它。

编辑:

如果您希望浏览器将文本显示为A 'quote' is &lt;b&gt;bold&lt;/b&gt;htmlspecialcharshtmlentities 是正确的函数,因为它们会转义 HTML 代码,并且浏览器会根据需要显示标签。

【讨论】:

  • 它正在打印,因为“报价”是粗体(粗体格式)。请阅读我的问题
  • 和我解释的一样。我刚刚编辑了 echo $str 输出。但我最初的问题是 A 'quote' is &lt;b&gt;bold&lt;/b&gt; 是预期的输出。我没有改变这一点。我的要求仍然是 A 'quote' is &lt;b&gt;bold&lt;/b&gt; ;请编辑您的答案以接受答案
  • A 'quote' is &lt;b&gt;bold&lt;/b&gt; 已打印并且是您指定的内容。然后我看不到您对 htmlentities 的问题。这是您的代码jsfiddle.net/t7Kra 的输出
【解决方案4】:

将其设置为..

<?php

function my_custom_echo($str)
{
echo htmlspecialchars($str);
}

my_custom_echo("<p>what ever I want </P>")


?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多