一般怎么判断搜索的input?判断变量“非空但允许为零”吗?

2013-07-14 08:20:18 +08:00
 cssnote
3563 次点击
所在节点    PHP
15 条回复
arron
2013-07-14 08:39:11 +08:00
同求

我现在用这

strlen(trim( $str ));
cssnote
2013-07-14 08:58:54 +08:00
@arron

你是用 !$str 、empty($str)、还是$str=='' ???
arron
2013-07-14 09:13:19 +08:00
觉得可以用这个:

$str || $str === "0"

下面这个可以顺便滤掉空白参数

strlen( trim( $str ) )
cssnote
2013-07-14 09:33:23 +08:00
@arron 你说听这个完整应该怎么写?

直接用 $str ==' ' 更简单啊
arron
2013-07-14 09:46:53 +08:00
恩, 测了下 $str == '' 可以.
123123
2013-07-14 09:58:57 +08:00
如果是警告报 notice 不要紧吗
cssnote
2013-07-14 10:04:13 +08:00
@123123 不明白你说的
dongbeta
2013-07-14 10:12:12 +08:00
一般情况下,搜索条件的:
1. 是一个有意义的搜索条件(去掉特殊字符,无意义字符)
2. 处理过的字符串长度大于特定长度(比如 3 个字符)


@cssnote 程序做到 notice free 很要紧。
msg7086
2013-07-14 10:48:34 +08:00
"非空但允许为零"

直接判断非空就行了。 isset($_GET['q']) && trim($_GET['q']) !== ''
cssnote
2013-07-14 21:43:31 +08:00
@msg7086

你这句里面能去除isset吗,会有什么影响 ?
msg7086
2013-07-15 05:55:23 +08:00
@cssnote 判断数组里是否有这个项目。直接引用会报错并严重降低性能。
picasso250
2013-07-15 12:49:29 +08:00
@msg7086 把“严重”二字去掉吧
这更多的关乎严谨。
msg7086
2013-07-15 13:34:00 +08:00
@picasso250 嗯,主要是best practice的问题,但是我记得以前有人说过产生任何错误都会造成额外的性能损失,而且很大。
picasso250
2013-07-15 16:27:09 +08:00
@msg7086 “而且很大”,我觉得那人夸张了。

当然,我也是支持使用isset的。这种用户输入,自然要小心。
cssnote
2013-07-15 17:07:05 +08:00
@msg7086
@picasso250

任其输入任何内容,不都isset了吧?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/75702

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX