V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Mac
V2EX  ›  PHP

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

  •  
  •   Mac · 2016-06-30 17:33:30 +08:00 · 2330 次点击
    这是一个创建于 3069 天前的主题,其中的信息可能已经有所发展或是发生改变。
    $text='a\tb';

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

    QRcode::png($text);

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

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

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

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

    单引号则表示原字符,其中的内容不会被解析器解析。这就是为什么你那两个字符串“看起来”一样,其实不一样。
    zingl
        6
    zingl  
       2016-06-30 18:47:48 +08:00
    有 php 之前、至少从 shell 开始就是双引号转义单引号不转义了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5509 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 01:33 · PVG 09:33 · LAX 17:33 · JFK 20:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.