代码之家  ›  专栏  ›  技术社区  ›  Ben

正则表达式压缩换行符不转换为PHP

  •  0
  • Ben  · 技术社区  · 8 年前

    我试图降低标记(从HTML生成)并去掉HTML中仅用于格式化的额外换行。我有一个关于正则表达式的工作示例 https://regex101.com/r/dEhyN3/1 但当我把它转换成PHP时,它不起作用,我很难理解为什么。

    public function squashEmptyLineBreaks(string $markdown) : string
    {
        return preg_replace('/\n{2,}/', '\n\n', $markdown);
    }
    

    测试:

        /** @test */
        public function verifySquashEmptyLineBreaks()
        {
            $original = <<<EOF
    **Language**
    
     - Added four languages: Italian, Portuguese (Brazil), Spanish (Mexico) and Chinese (Traditional)
    
    
    
    
    
    **Bug fixes**
    
    
     - Fixed camera jittering for passenger sitting on the back of a motorcycle with sidecar
    EOF;
            $expected = <<<EOF
    **Language**
    
     - Added four languages: Italian, Portuguese (Brazil), Spanish (Mexico) and Chinese (Traditional)
    
    **Bug fixes**
    
     - Fixed camera jittering for passenger sitting on the back of a motorcycle with sidecar
    EOF;
    
            $this->assertEquals($expected, $this->parsesMarkdown->headersNeverAtEndOfLine($original));
        }
    

    此测试继续失败,输出未修改。 我疯了还是忽略了什么?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Jirka Hrazdil    8 年前

    注意,在单引号字符串中,序列如 \n 未处理。请改用双引号字符串。

    public function squashEmptyLineBreaks(string $markdown) : string
    {
        return preg_replace("/\n{2,}/", "\n\n", $markdown);
    }
    
    推荐文章