是否有另一种方法可以在 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 对象获取用户的时区? [复制]