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

看到这么一句代码

  •  
  •   berumotto ·
    noberumotto · 2020-05-18 10:20:10 +08:00 · 5987 次点击
    这是一个创建于 1655 天前的主题,其中的信息可能已经有所发展或是发生改变。

    改个项目看到这句代码,php 的,用途是替换一个换行。然而它不用换行符,直接回了个车🤪

    str_replace('
    
    ', '',$str);
    
    34 条回复    2020-05-19 10:50:58 +08:00
    zarte
        1
    zarte  
       2020-05-18 10:31:57 +08:00
    有可能不是回车。。。可能是 /r/n 之外的
    k9982874
        2
    k9982874  
       2020-05-18 10:33:06 +08:00
    乍一看一脸懵 B,去 PHP 测试了一下是可以用的,这是个大神。
    acthtml
        3
    acthtml  
       2020-05-18 10:34:10 +08:00   ❤️ 15
    是个大神,所见即所得
    ningfan120
        4
    ningfan120  
       2020-05-18 10:36:56 +08:00
    牛逼,长见识
    ila
        5
    ila  
       2020-05-18 10:46:20 +08:00 via Android
    php 单引号管多行可以这样做,
    python 这样做更麻烦。
    littleylv
        6
    littleylv  
       2020-05-18 10:53:53 +08:00
    这样不知道会不会有不同平台换行符的问题
    berumotto
        7
    berumotto  
    OP
       2020-05-18 10:55:55 +08:00
    @littleylv linux 下因为这个写法出了 bug,所以我才找到它的
    berumotto
        8
    berumotto  
    OP
       2020-05-18 10:56:44 +08:00
    @zarte 然而目的就是为了替换回车
    shintendo
        9
    shintendo  
       2020-05-18 10:58:27 +08:00
    这个写法的可读性明显不如换行符吧,更别提潜在的兼容性问题
    lepig
        10
    lepig  
       2020-05-18 11:00:20 +08:00
    替换的时候一般都是`\r\n`或者`\n` 这种应该在平台上有兼容性问题。 在 windows 下回车就是\r\n Linux 上是\n mac 上好像是\r
    NotFoundEgg
        11
    NotFoundEgg  
       2020-05-18 11:07:01 +08:00   ❤️ 5
    所见即所得 果然 php 是世界上最好的语言
    idealhs
        12
    idealhs  
       2020-05-18 11:26:22 +08:00
    woc 牛逼
    bravecarrot
        13
    bravecarrot  
       2020-05-18 11:45:09 +08:00   ❤️ 1
    所见即所得 笑死我了
    yafoo
        14
    yafoo  
       2020-05-18 12:42:51 +08:00 via Android
    用编辑器处理多余的换行时,经常用这种方法,但是这样会完全变成一行,所以我都是把两个换行替换成一个换行,多执行几次就 ok 了。
    xizon
        15
    xizon  
       2020-05-18 14:05:17 +08:00   ❤️ 1
    感觉还是 PHP_EOL 比较好使
    enjoyCoding
        16
    enjoyCoding  
       2020-05-18 14:42:00 +08:00
    @littleylv 有的 看编辑器格式 windows 默认 \r\n mac 和 Linux 默认 \r
    windows 写完 linux 和 mac 用不了
    qiayue
        17
    qiayue  
       2020-05-18 14:45:25 +08:00
    临时打印些信息要换行,我也常这样用
    littleylv
        18
    littleylv  
       2020-05-18 14:46:55 +08:00
    @xizon #15 如果是一个在 windows 下编辑的 txt,到 linux 服务器上用 PHP_EOL 解析,会不会有问题?
    hejw19970413
        19
    hejw19970413  
       2020-05-18 14:53:11 +08:00
    @enjoyCoding mac 是 \r Linux 是 \n windows \r\n
    enjoyCoding
        20
    enjoyCoding  
       2020-05-18 15:09:27 +08:00
    @hejw19970413 受教啦 感谢!
    milugt
        21
    milugt  
       2020-05-18 15:29:02 +08:00
    systemcall
        22
    systemcall  
       2020-05-18 15:31:06 +08:00 via Android
    次世代的 WYSWYG,比别的编程语言领先了一个时代
    php 是世界上最好的语言
    xnode
        23
    xnode  
       2020-05-18 15:33:33 +08:00
    ... PHP_EOL 这个就是门槛太低的缘故....
    maggch
        24
    maggch  
       2020-05-18 15:37:19 +08:00 via Android
    @hejw19970413 mac 早就是 n 了,r 是老黄历了
    Huelse
        25
    Huelse  
       2020-05-18 15:53:25 +08:00
    @berumotto #7 应该是因为这个文件是在 win 下编辑所以 linux 下就用不了了,可以验证下在 linux 下重写看看还有没有效
    Marstin
        26
    Marstin  
       2020-05-18 15:55:25 +08:00
    长见识了
    siganushka
        27
    siganushka  
       2020-05-18 17:49:15 +08:00
    PHP_EO L 就是专门干这个的,还跨平台,这么硬编码不会被打么?
    zpfhbyx
        28
    zpfhbyx  
       2020-05-18 18:40:47 +08:00
    说 PHP_EOL 的,没有考虑过 这个没准是 window 编辑器下的换行呢, 服务器是 linux 的,
    zpfhbyx
        29
    zpfhbyx  
       2020-05-18 18:42:45 +08:00
    hgc81538
        30
    hgc81538  
       2020-05-18 18:47:36 +08:00
    通用的寫法應該是 str_replace(array("\r", "\n"), '', $str);
    lululau
        31
    lululau  
       2020-05-18 18:51:26 +08:00 via iPhone
    人家这个才是真正的换行符好吧,你说的那个反斜杠嗯,是换行符的转义形式🤦‍♂️
    siganushka
        32
    siganushka  
       2020-05-18 18:54:03 +08:00
    @zpfhbyx PHP_EOL 是获取当前换行符的 const,不同平台其值不一样,你要说在 win 下开发在 linux 运行,那可以用 \r 和 \n,怎么着也不能那样些。
    zpfhbyx
        33
    zpfhbyx  
       2020-05-18 19:11:05 +08:00
    @siganushka 我知道 PHP_EOL 的用法..这个不用强调,我更倾向于不了解业务就说 PHP_EOL 是不严谨的,只不过是没用\r
    \n 啥的去替换回车呗.
    pigzzz
        34
    pigzzz  
       2020-05-19 10:50:58 +08:00
    PHP_EOL
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2790 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 15:36 · PVG 23:36 · LAX 07:36 · JFK 10:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.