如何删除字符串前后的空格?

时间:2012-10-06 08:52:47

标签: php regex

我当然有两个充满空间的词,前后有很多空格, 我需要做的是删除之前和之后的空格,而不是介于两者之间。

如何删除之前和之后的空格?

5 个答案:

答案 0 :(得分:62)

您不需要正则表达式,请使用trim()

$words = '      my words     ';
$words = trim($words);
var_dump($words);
// string(8) "my words"

此函数返回一个字符串,其中从str的开头和结尾剥去了空格。

答案 1 :(得分:6)

为了完整性(因为此问题已标记为regex),此处是正则表达式中的trim()重新实现:

function preg_trim($subject) {
    $regex = "/\s*(\.*)\s*/s";
    if (preg_match ($regex, $subject, $matches)) {
        $subject = $matches[1];
    }
    return $subject;
}
$words = '      my words     ';
$words = preg_trim($words);
var_dump($words);
// string(8) "my words"

答案 2 :(得分:1)

出于某种原因,上面的两个解决方案对我没有用,所以我提出了这个解决方案。

function cleanSpaces($string) {
    while(substr($string, 0,1)==" ") 
    {
        $string = substr($string, 1);
        cleanSpaces($string);
    }
    while(substr($string, -1)==" ")
    {
        $string = substr($string, 0, -1);
        cleanSpaces($string);
    }
    return $string;
}

答案 3 :(得分:0)

问题在于如何使用正则表达式,所以:

$str1=~ s/^\s+|\s+$//g; 

在开头^(空白)\s+|(末尾空白)\s+$处重复//g。同样的概念也适用于'ed'(vi / vim)

有时最好只回答所提出的问题。

答案 4 :(得分:0)

如果修剪也不适合您,请尝试此操作。 您只需要将其写入其他变量即可;

$str = ' hello world ';
echo strlen($str);

$trim_str = trim($str);
echo strlen($trim_str);