私はmarkdown(HTMLから生成された)を取って、書式設定のためにHTML内にあった余分な改行を取り除こうとしています。私はhttps://regex101.com/r/dEhyN3/1の正規表現の実際の例を持っていますが、それをPHPに変換すると機能しません。なぜそれを理解するのに苦労しています。正規表現の縮約改行が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));
}
このテストが失敗し続け、出力は未修飾です。 私は狂っているのですか、何か見落としていますか?
'\ n \ n'は二重改行ではありません。 cf. http://php.net/string – Dormilich
[余分な行の戻り値を取り除く]の可能な複製(https://stackoverflow.com/questions/728640/remove-excessive-line-returns) – ctwheels