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


Remove spaces at the start of each line in a multiline string variable

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

我有这样的输入:

Lorem ipsum悲哀坐amet,consectetur adipiscing elit。Sed et nislnulla。埃涅阿斯纪中期是商品运输的预兆。Etiam调味品。

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

--Duis eget vehicula orci。Curabitur laoret velit坐amet ligula刚果,埃格特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 />");

如果我将't更改为's,则什么都不起作用。它将删除空格,但也将删除单词之间的空格。

目前公布的答案都没有任何优雅或直接的表现。

我的正则表达式包含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);

输出:

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.
$str = "REPlACE THIS WITH YOUR TEXT STRING";
// split the string by the newline character, no limit, without empty
$_arr = preg_split("/['r'n]+/",$str,-1,PREG_SPLIT_NO_EMPTY);
$arr=[];
foreach($_arr as $line){
    // trim these line
    array_push($arr,trim($line));
}
var_dump($arr);

我测试过,有效。

join("'n", array_map('trim', preg_split('/'R/', $string)));
//separates the paragraph into 3 strings, divided by '--'
  list($string1, $string2, $string3) = explode('--',$string);
//trim() takes out the spaces before and after each string
  $string1 = trim($string1);
  $string2 = trim($string2);
  $string3 = trim($string3);
  echo $string1." ".$string2." ".$string3;

如果这对你有用,请告诉我。

您可以像这样从trim使用:

ltrim($string, ' ');

这段代码将从$string中删除第一个空格,还有rtrim、trim函数。