2012-10-06 46 views
14

我有两个词,当然还有空间,前后有很多空格, 我需要做的就是删除之前和之后的空格,而不是之间的空格。如何删除字符串前后的空格?

我怎样才能删除它之前和之后的空间?

回答

43

你不需要正则表达式的是,使用trim()

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

该函数返回空白从一开始就和STR的端部剥离的字符串。

+0

这是怎么回事?我仍然在弦乐之后看到我的空白处。任何提示?任何人 ? – ihue

+0

也许他们不是真的空白。我遇到了来自Office Word文本的这个问题。 –

5

为了完整(因为这个问题被标记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" 
1

出于某种原因,两个解决上述didnt为我工作,所以我想出了这个解决方案。

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; 
} 
+0

请注意,虽然这可能会起作用,但递归的开销会使此过程非常缓慢且效率低下。我不知道为什么修剪不适合你,因为它应该适用于任何字符串。 –