如何检查PHP中字符串中是否只有空格?

如何检查PHP中字符串中是否只有空格?,php,string,utf-8,Php,String,Utf 8,结果是9 我也试过了 print_r(strlen(trim(' '))); 但结果不是零 请下载我的代码,您将得到结果 您可以使用或。您想知道字符串是否包含空格吗 preg_replace('/[\n\r\t\s]/', '', ' ') 那么 或者这个 $str = preg_replace('/\s\s+/', '', $str); 如果这不起作用,我建议这样做 mb_language('uni'); mb_internal_encoding('UTF-8'); $s

结果是9

我也试过了

print_r(strlen(trim('     ')));
但结果不是零

请下载我的代码,您将得到结果


您可以使用或。

您想知道字符串是否包含空格吗

preg_replace('/[\n\r\t\s]/', '', '   ')
那么

或者这个

$str = preg_replace('/\s\s+/', '', $str);
如果这不起作用,我建议这样做

mb_language('uni');
mb_internal_encoding('UTF-8');

$s = '     ';
if (strlen(preg_replace('/\s+/u','',$s)) == 0) {
    echo "String is empty.\n";
}
这些解决方案已经在不同的平台上进行了测试

u告诉preg_replace()将字符串视为多字节字符串,即utf-8


该字符是一个不间断的空格C2A0,可以使用alt+0160生成。

我认为最快的方法是修剪前导空格(如果有其他字符,将很快失败),并将结果与空字符串进行比较:

$s = '     ';
if (strlen(trim(preg_replace('/\xc2\xa0/',' ',$s))) == 0) {
    echo "String is empty.\n";
}
也会成功的


也许你在做别的事情,把结果搞砸了?您的测试确实返回0

$bar = trim($_POST['foobar']);
if(empty($bar)){
 die('the user didn\'t input anything!');
}
这就是我们的预期行为

此函数返回一个带有 从一开始就删除空白 str的结束。没有第二个 参数,trim()将剥离这些 人物:

  • “”(ASCII 32(0x20)),一个普通空格
  • “\t”(ASCII 9(0x09)),一个选项卡
  • “\n”(ASCII 10(0x0A)),一个新行(换行符)
  • “\r”(ASCII 13(0x0D)),回车符
  • “\0”(ASCII 0(0x00)),NUL字节
  • “\x0B”(ASCII 11(0x0B)),一个垂直选项卡
更新:

看着你的附加代码,我注意到你在两个空格之间有一个额外的字符

这是hextump-C的输出

print_r(strlen(trim('     ')));
trim不会删除该空间,因为。。嗯,这不是一个空间。关于如何发现不寻常的人物

哦,要回答您最新的问题,请按照Peter所说的那样使用。

一个简单的preg\u match()就足够了:

$ od space.php 
0000000    120302                                                        
0000002
如果trim($var)不起作用,则$var可能不是字符串。 所以先把它抛进弦里

$var1=字符串($var) 然后
trim($var1)

你的两次尝试都没有意义,结果也没有意义。修剪第一个字符串应导致空字符串(长度为0)。preg_replace用于替换字符串,而不是检查字符串是否存在。很抱歉标题中出现错误。@布鲁斯:在我的安装中:
print_r(strlen(trim(“”))=0不知道如何得到9<代码>echo strlen(修剪(“”))打印
0
。我从这个页面复制了代码,代码重用为零。可能是空间不同。但我不知道为什么我的代码结果不是零。我无法运行空语句,这是怎么回事?啊,在使用空之前,必须将修剪后的字符串分配给变量。注意空():empty('0')也返回True!请下载我的代码并检查空格,我认为它不是正常的空格。请注意,
empty
对于
“0”
也会返回true。您可能需要指定内部编码。代码中有一个不间断的空格,但preg_replace会将它们全部转换为常规空格,然后trim会处理它。
if(strlen(trim($_POST['foobar'])) == 0){
 die('the user didn\'t input anything!');
}
$bar = trim($_POST['foobar']);
if(empty($bar)){
 die('the user didn\'t input anything!');
}
print_r(strlen(trim('     ')));
$ hexdump -C  space.php 
00000000  3c 3f 0d 0a 70 72 69 6e  74 5f 72 28 73 74 72 6c  |<?..print_r(strl|
00000010  65 6e 28 74 72 69 6d 28  27 20 c2 a0 20 27 29 29  |en(trim(' .. '))|
00000020  29 3b 0d 0a 3f 3e                                 |);..?>|
00000026
$ od space.php 
0000000    120302                                                        
0000002
if(preg_match('/^\s+$/', $str)) == 1){
 die('there are only spaces!');
}