是否有另一种方法可以在 PHP 中编写字符串文字(不带 ' 或 ")?

Posted

技术标签:

【中文标题】是否有另一种方法可以在 PHP 中编写字符串文字(不带 \' 或 ")?【英文标题】:Is there an alternative way to write string literals in PHP (without ' or ")?是否有另一种方法可以在 PHP 中编写字符串文字(不带 ' 或 ")? 【发布时间】:2012-06-08 20:33:13 【问题描述】:

我可以在 php 中使用什么来代替普通的 ' 和(不带 ' 或 ")符号?

例子:

echo("Hello, World!")

【问题讨论】:

用`代替普通的'和"符号`是什么意思? 您可以通过转义来添加双引号:"\"" ...因为,虽然意图似乎可能被误导,但我还没有看到提到的替代方案。 别忘了在 html 中,你最好使用" 实际上,heredoc 和 nowdoc,就像我在下面描述的那样,是 PHP 的相当未知的特性。 【参考方案1】:

字符串封装有4种方式,单引号'、双引号"、heredoc和nowdoc。

阅读full php.net article here。

赫雷多克

第三种分隔字符串的方法是 heredoc 语法:

http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;

Nowdoc

Nowdocs 是单引号字符串,就像 heredocs 是双引号字符串。 nowdoc 的指定与heredoc 类似,但在nowdoc 内部不进行解析。该构造非常适合嵌入 PHP 代码或其他大型文本块而无需转义。它与 SGML 结构有一些共同的特点,因为它声明了一个不用于解析的文本块。

nowdoc 使用与 heredocs 相同的

http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.nowdoc

$str = <<<'EOD'
Example of string
spanning multiple lines
using nowdoc syntax.
EOD;

转义

如果你想在单引号或双引号字符串中使用文字单引号或双引号,你必须将它们转义:

$str = '\''; // single quote
$str = "\""; // double quote

正如 Herbert 所说,您不必在双引号字符串中转义单引号,也不必在单引号字符串中转义双引号。


如果要大面积加引号,使用addslashes()函数:

$str = "Is your name O'reilly?";
echo addslashes($str); // Is your name O\'reilly?

【讨论】:

+1 参考。但是,here-doc 和 now-doc 看起来非常相似 ;-) 扩展或注意插值差异可能是值得的。 添加了来自 php.net 页面的引号作为解释 ;) 您不必在双引号内转义单引号,反之亦然。例如"O'reilly"'She said, "Me too"' 所以“EOD”是任意的?还是一些命名约定?还是保留名称?对于“数据结束”?也许在答案中包含类似的内容? 使用addslashes 几乎总是错误的。唯一有效的用例是当您想要动态生成 PHP 代码时,您也不应该这样做。

以上是关于是否有另一种方法可以在 PHP 中编写字符串文字(不带 ' 或 ")?的主要内容,如果未能解决你的问题,请参考以下文章

是否有另一种方法可以在不使用 if 语句的情况下有条件地增加数组值? C++

SQL-'08:多个 Replace 语句是一种不好的做法/是不是有另一种方法来编写此查询?

是否有另一种方法可以在 Eloquent 模型上“设置连接”?

是否有另一种方法来显式初始化父类?

是否有另一种方法可以从 Spring MVC 中的 HttpServletRequest 对象获取用户的时区? [复制]

您如何更新priority_queue中的值,或者是不是有另一种方法可以在c ++中更新堆中的键