删除多行字符串变量中每行开头的空格

Pan*_*war 8 html php regex

我试图从段落中删除空格,但失败了。

我有这样的输入:

Lorem ipsum dolor 坐 amet,consectetur adipiscing 精英。Sed et nisl nulla。Aenean interdum eget augue vehicula commodo。Etiam 调味品。

--Nunc lacinia dui eget volutpat porta。Morbi eu magna ornare,facilisis risus eget,varius sem。Proin hendrerit lacus 调味品。

--Duis eget vehicula orci。Curabitur laoreet velit sat amet ligula congue, eget consectetur risus ultricies。Curabitur dictum felis at。

我有提到“--”的空格,我需要从那里删除空格。

我试过这些:

str_replace(' ', '', $string)
preg_replace('/\s+/',
preg_replace('!(\<br ?/?\>)([ ]|\t)+!i', '<br />', $str);
string.replaceAll("<br />\\p{Space}+", "<br />");
Run Code Online (Sandbox Code Playgroud)

如果我更改\t\s. 它会删除空格,但也会删除单词之间的空格。

mic*_*usa 10

当前发布的答案都没有表现出任何优雅或直接。

我的正则表达式包含 3 个字符和一个模式修饰符。 /^ +/m

  • m最后指示^在模式中找到的任何内容都将代表每个换行符的开始(而不是像通常那样的字符串的开始)。
  • 我使用的是文字空白字符,尽管一些开发人员更喜欢使用它\s来提高可读性并涵盖可能遇到的一系列空白字符。
  • +表示前一个字符/表达式中的一个或多个。我本可以使用有限量词,/^ {2}/m但在这种情况下选择了模式简洁性和灵活性。

代码:(演示

$text = <<<TEXT
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed et nisl nulla. Aenean interdum eget augue vehicula commodo. Etiam condimentum.

  Nunc lacinia dui eget volutpat porta. Morbi eu magna ornare, facilisis risus eget, varius sem. Proin hendrerit lacus condimentum.

  Duis eget vehicula orci. Curabitur laoreet velit sit amet ligula congue, eget consectetur risus ultricies. Curabitur dictum felis at.
TEXT;

echo preg_replace('/^ +/m', '', $text);
Run Code Online (Sandbox Code Playgroud)

输出:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed et nisl nulla. Aenean interdum eget augue vehicula commodo. Etiam condimentum.

Nunc lacinia dui eget volutpat porta. Morbi eu magna ornare, facilisis risus eget, varius sem. Proin hendrerit lacus condimentum.

Duis eget vehicula orci. Curabitur laoreet velit sit amet ligula congue, eget consectetur risus ultricies. Curabitur dictum felis at.
Run Code Online (Sandbox Code Playgroud)