PHP:在单个字符串中使用单引号和双引号

7
如何使用类似下面代码的字符串。
$str = 'Is yo"ur name O'reil"ly?';

上面的代码只是一个例子...我需要使用包含单引号和双引号的大型html模板。我尝试了Addslashes php方法,但当我在该函数中使用单引号和双引号字符串时,会出现语法错误。请帮助我。
注意:我的实时用法是像下面这样的json数据。
    $string = "

    <html>
    ...
    <b:if cond='data:blog.pageType == "item"'>
    ..

    ";
   $string = '{"method":"template","params":{"1":"'.$string.'"},"token":"12345"}';
3个回答

10

你可以使用heredoc语法来实现:

$string = <<<EOM
    <html>
    ...
    <b:if cond='data:blog.pageType == "item"'>
    ..
EOM;

如果你希望防止变量插值,你也可以使用nowdoc(自 PHP 5.3 起):

$string = <<<'EOM'
    <html>
    ...
    <b:if cond='data:blog.pageType == "item"'>
    ..
EOM;

无论是heredoc还是nowdoc都有特定的格式要求,所以一定要仔细阅读手册。


1
你还可以提到在heredoc结束标记之前不允许有空格/制表符。 - Johan
@Luceos 变量在 heredoc 中可以很好地工作。请参考此示例 - http://php.net/manual/en/language.types.string.php#example-73 - web-nomad
是的,我知道;打错字了;办公室温度上升了 xD - Luceos
@user2425700,如果你在heredoc中使用$variable,就像在双引号中一样,例如"hello $variable" - Ja͢ck
顺便说一下,既然你是相对新手,可以阅读关于如何接受答案的[about]部分。 - Ja͢ck

2

我使用了heredoc来做同样的事情,就像这样:

$string = <<< EOF
'Is yo"ur name O'reil"ly?'
EOF;

1
你可以这样使用 heredoc
$str = <<< EOF
'Is yo"ur name O'reil"ly?'
EOF;

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