php echo无需转义引号

时间:2014-02-11 15:56:40

标签: php syntax escaping echo

有没有办法'回声'/'渲染HTML'而不必逃避每个引用?

有点像下面的HTML如何呈现,而不必使用echo或逃避任何事情。

忽略任何php语法错误,仅举例

 <? if($a == $b) {;?> I said: "It's with quotes" <? ;} ?>
 <? else {;?> They said "It's still with quotes" <? ;} ?>

这样做的原因是我需要回显一个使用单引号和双引号的大型Javascript文件,并且需要永远地将它们全部转义。

4 个答案:

答案 0 :(得分:3)

您可以使用HEREDOC语法。

$str = <<<TEXT
I said: "It's with quotes"
TEXT;

TEXT可以是任何东西,只要你在开场线和结束线上使用它:

$str = <<<ANYTHING
I said: "It's with quotes"
ANYTHING;

答案 1 :(得分:2)

假设您只是尝试显示(而不是运行)某些代码,您可以使用以下两种方法中的任何一种:

  • 将JavaScript文件存储为单独的文件,并使用file_get_contents()获取代码并将其显示在<pre>代码块
  • 使用HEREDOC语法存储文件内容

方法#1:

$contents = file_get_contents('file.js');
echo '<pre>', $contents, '</pre>';

方法#2:

$contents = <<<FILE

... contents ...

FILE;

echo '<pre>', $contents, '</pre>';

我会采用第一种方法。这样,您就不会使用实际上不用于页面呈现的长JavaScript代码来混乱您的脚本。将逻辑分成多个文件通常是个好主意。但在这两种情况下,您根本不必担心引用。

答案 2 :(得分:2)

您可以使用所谓的HEREDOC(此处发音为doc)。

以下是一个例子:

$js = <<<JAVASCRIPT
var some = {
    "javascript": 'here'
};
JAVASCRIPT;

您不需要转义任何内容,因为您定义了命名分隔符。在这种情况下,分隔符为JAVASCRIPT。我建议你阅读整个文档页面并选择最适合你的情况。例如,PHP 5.3+提供了很好的nowdoc语法。

答案 3 :(得分:-1)

您可以使用相反类型的引号来分隔字符串:

echo "It's with quotes";
echo 'He said "Do it!"';

如果它们与用于分隔字符串的引号相同,则只需要转义引号。因此,如果您的字符串中有两种类型的引号,则需要转义其中的一些:

echo 'They said "It\'s still with quotes"';

另一种通常用于长块的解决方案是 heredoc

echo <<<EOF
They said "It's still with quotes"
EOF;