如何检查PHP中字符串中是否只有空格?
结果是9 我也试过了如何检查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
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)),一个垂直选项卡
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!');
}