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

时间:2016-05-13 07:22:10

标签: php html regex

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

我输入的内容如下:

  

Lorem ipsum dolor坐下来,精神上的精神。 Sed et nisl   法无。 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坐amet ligula   争论,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 />");

如果我将\t更改为\s,则无效。它会删除空格,但也会删除单词之间的空格。

5 个答案:

答案 0 :(得分:1)

当前发布的答案中没有一个表现出优雅或直接。

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

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

代码:(Demo

$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.

答案 1 :(得分:0)

你可以像这样使用修剪:

ltrim($string, ' ');

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

答案 2 :(得分:0)

$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);

我已经测试过,有效。

答案 3 :(得分:0)

join("\n", array_map('trim', preg_split('/\R/', $string)));

答案 4 :(得分:-1)

.parent {
    position: fixed;
    top: 20%;
    left: 0;
}

.parent .child {
    height: 300px;
    width: 500px;
    background: orange;
    transform: translate(-100%);
    -webkit-transform: translate(-100%);
    -moz-transform: translate(-100%);
    -o-transform: translate(-100%);
}

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