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

Php 如何删除字符串前后的空格?,php,regex,Php,Regex,当然,我有两个词是以空间为中心的,前后都有很多空间, 我需要做的是删除前后空格,而不删除中间空格 如何删除前后的空格?您不需要正则表达式,请使用: 此函数返回一个字符串,该字符串从str的开头和结尾去掉空格。为了完整性(因为这个问题被标记为regex),下面是regex中的trim()重新实现: function preg_trim($subject) { $regex = "/\s*(\.*)\s*/s"; if (preg_match ($regex, $subject, $

当然,我有两个词是以空间为中心的,前后都有很多空间, 我需要做的是删除前后空格,而不删除中间空格


如何删除前后的空格?

您不需要正则表达式,请使用:

此函数返回一个字符串,该字符串从str的开头和结尾去掉空格。

为了完整性(因为这个问题被标记为
regex
),下面是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"

由于某种原因,上面两个解决方案对我不起作用,所以我提出了这个解决方案

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

问题是如何使用正则表达式,因此:

$str1=~ s/^\s+|\s+$//g; 
也就是说,开头是
^
(空白)
\s+$
(结尾是空白)
/g
重复删除。同样的概念也适用于“ed”(vi/vim)


有时候,最好只回答被问到的问题。

如果trim对您也不起作用,请尝试这个。 您只需要将其写入另一个变量

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

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

请注意,虽然这可能会起作用,但递归的开销使得这一过程非常缓慢且效率低下。我不知道为什么修剪对你不起作用,因为它在任何琴弦上都应该很好。为什么这个对我不起作用?我仍然可以看到字符串后面的空白。有什么提示吗?有人吗?也许他们不是真正的空白。我在Office Word的文本中遇到了这个问题。我需要从字符串的开头和结尾修剪一个简单的空格(我不知何故跳过了顶部投票的答案,以使用PHP的内置修剪函数)。在此之前,我使用了你的函数。它正在返回一个空字符串。仅当字符串的开头和结尾有多个空格时,此函数才起作用。有这样一个函数可以去掉所有的空间,这不是一个糟糕的主意,但它也需要只使用一个空间。
$str = ' hello world ';
echo strlen($str);

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