这两种字符串有什么区别?

2016-06-30 17:33:30 +08:00
 Mac
$text='a\tb';

$text1='a'."\t".'b';

QRcode::png($text);

最终输出 TEXT 和 TEXT1 是不一样的
2329 次点击
所在节点    PHP
6 条回复
hjxx
2016-06-30 17:37:49 +08:00
双引号 \t 会被解析成 tab
单引号 \t 不解析
Mac
2016-06-30 17:39:27 +08:00
@hjxx 现在有个问题了,我一个很长的字符串,中间有 N 多;号,数量不定,要怎么把他们替换成可以被解析的 tab ?
daniellu
2016-06-30 17:53:06 +08:00
正则表达式啊, preg_replace.
Mac
2016-06-30 17:58:29 +08:00
@daniellu 搞定,原来正则里也要双引号,感谢两位
raincious
2016-06-30 18:01:10 +08:00
@Mac

$str = str_replace(';', "\t", $str);

http://php.net/manual/en/function.str-replace.php

PHP 里,使用双引号包裹的字符串意味着 **解析器** 会对其进行解析,包括将转义字符转义。

单引号则表示原字符,其中的内容不会被解析器解析。这就是为什么你那两个字符串“看起来”一样,其实不一样。
zingl
2016-06-30 18:47:48 +08:00
有 php 之前、至少从 shell 开始就是双引号转义单引号不转义了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/289403

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX