print_r(strlen(trim(' ')));
我也试过
preg_replace('/[\n\r\t\s]/', '', ' ')
但结果不是零。
请下载我的代码,你会得到的结果
http://blog.eood.cn/attachment.php?id=70
print_r(strlen(trim(' ')));
我也试过
preg_replace('/[\n\r\t\s]/', '', ' ')
但结果不是零。
请下载我的代码,你会得到的结果
http://blog.eood.cn/attachment.php?id=70
mb_language('uni');
mb_internal_encoding('UTF-8');
$s = ' ';
if (strlen(preg_replace('/\s+/u','',$s)) == 0) {
echo "String is empty.\n";
}
如果不工作,我建议这样做
$s = ' ';
if (strlen(trim(preg_replace('/\xc2\xa0/',' ',$s))) == 0) {
echo "String is empty.\n";
}
这些解决方案已在不同的平台上进行过测试。
在U flag讲述的preg_replace()来处理字符串作为一个多字节字符串,即UTF-8
的字符是一个不间断空格C2A0,并且可以与ALT + 0160来生成。
你可以下载我的代码,并检查*空间*,我认为这不是正常的空间。 – 2009-11-18 08:43:48
请注意'empty'也为''0''返回* true *。 – Gumbo 2009-11-18 08:47:10
请下载我的代码 – 2009-11-18 08:52:58
你想知道一个字符串是否包含空格?
if(strpos($string, ' ') !== false) echo $string.' contains a space';
如何this ...
$str = preg_replace('/\s\s+/', '', $str);
或者这...
$str = str_replace(array("\n", "\r", "\t", " ", "\o", "\xOB"), '', $str);
结果是2,而不是零 – 2009-11-18 08:28:39
我认为,最快的方法就是修剪领先的空间(如果有其它字符ltrim
将失败快)和比较的结果为空字符串:
# Check if string consists of only spaces
if (ltrim($string, ' ') === '') {
if(strlen(trim($_POST['foobar'])) == 0){
die('the user didn\'t input anything!');
}
empty
还将使
像
$bar = trim($_POST['foobar']);
if(empty($bar)){
die('the user didn\'t input anything!');
}
我无法得到空的声明运行,那有什么关系? – 2009-11-18 08:36:01
啊,你必须在使用空之前将修剪过的字符串赋给变量。 – 2009-11-18 08:38:03
@彼得:好点! – RageZ 2009-11-18 08:47:11
中号你是否正在做其他事情搞乱了结果?您的测试返回0
print_r(strlen(trim(' ')));
这就是trim的预期行为。
该函数返回 从空白开始 和STR的端部剥离的字符串。没有第二 参数,修剪()将去除这些 字符:
- “”(ASCII 32(0×20)),一个普通的空间。
- “\ t”(ASCII 9(0x09)),一个选项卡。
- “\ n”(ASCII 10(0x0A)),换行(换行)。
- “\ r”(ASCII 13(0x0D)),回车。
- “\ 0”(ASCII 0(0x00)),NUL字节。
- “\ x0B”(ASCII 11(0x0B)),一个垂直标签。
UPDATE:
看你的连接代码,我注意到你有2个空间之间的一个多余的字符。
这是hexdump都可以输出-C
$ 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输出,与文件中只是性格。
$ od space.php
0000000 120302
0000002
修剪不会删除该空间,因为..好吧,它不是空间。 This is a good reference关于如何识别不寻常的字符。
哦,为了回答您更新的问题,只需使用empty,正如Peter所说。
一个简单的preg_match()就足够了:
if(preg_match('/^\s+$/', $str)) == 1){
die('there are only spaces!');
}
如果装饰($ VAR)没有再工作$变种可能不是一个字符串。 所以首先铸造到串
$ VAR1 =串($变种) 然后 修整(VAR1 $)。
你的两次尝试甚至没有意义,也没有你的结果。修剪第一个字符串应该产生一个空字符串(长度为0)。 preg_replace用于替换字符串,而不检查它们是否存在。 – mpen 2009-11-18 08:22:19
对于标题中的错误感到抱歉。 – 2009-11-18 08:24:02
@Bruce:在我的安装中:'print_r(strlen(trim('')));'= 0想知道如何得到9! – RageZ 2009-11-18 08:24:58