有没有办法'回声'/'渲染HTML'而不必逃避每个引用?
有点像下面的HTML如何呈现,而不必使用echo
或逃避任何事情。
忽略任何php语法错误,仅举例
<? if($a == $b) {;?> I said: "It's with quotes" <? ;} ?>
<? else {;?> They said "It's still with quotes" <? ;} ?>
这样做的原因是我需要回显一个使用单引号和双引号的大型Javascript文件,并且需要永远地将它们全部转义。
答案 0 :(得分:3)
您可以使用HEREDOC语法。
$str = <<<TEXT
I said: "It's with quotes"
TEXT;
TEXT
可以是任何东西,只要你在开场线和结束线上使用它:
$str = <<<ANYTHING
I said: "It's with quotes"
ANYTHING;
答案 1 :(得分:2)
假设您只是尝试显示(而不是运行)某些代码,您可以使用以下两种方法中的任何一种:
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;