我当然有两个充满空间的词,前后有很多空格, 我需要做的是删除之前和之后的空格,而不是介于两者之间。
如何删除之前和之后的空格?
答案 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);