【问题标题】:How to find if a variable contains certain character or not ? PHP [duplicate]如何查找变量是否包含某些字符? PHP [重复]
【发布时间】:2014-03-23 05:11:37
【问题描述】:

简介

在搜索中,我想搜索年龄范围。

如果用户以这种方式插入像 10-30 这样的包含“-”的输入 我将显示年龄大于 10 岁且小于 30 岁的人的列表。

我的问题

$q = mysql_real_escape_string(htmlspecialchars("user input from search field"));

在进入查询之前从这里开始,我想提出两个条件, 一:用户输入中是否有'-'?如果是,我想按照其他方式查询,如果不是。

那么,我怎样才能进入第一个条件呢?

【问题讨论】:

  • 您的预算是多少?如果您希望我们制作所有代码,您不会期望它是免费的,对吧?
  • 谢谢你,我有一个很好的 ROLMFHO 时刻@h2ooooooo
  • 你为什么不直接使用下拉选择?您知道人们通常是如何懒惰地输入文本,但独自一人在打字时冒着犯错的风险。如果他们只输入 10--//@@!!!30 怎么办?你白白给自己带来更多的工作和麻烦。

标签: php


【解决方案1】:

这将起作用:

// use strpos() because strstr() uses more resources
if(strpos("user input from search field", "-") === false)
{
    // not found provides a boolean false so you NEED the ===
}
else
{
    // found can mean "found at position 0", "found at position 19", etc...
}

strpos()

不该做的事

if(!strpos("user input from search field", "-"))

上面的例子会让你大吃一惊,因为strpos() 可以返回一个 0(零),它是一个有效的字符串位置,就像它是一个有效的数组位置一样。

这就是为什么检查=== false是绝对必要的

【讨论】:

    【解决方案2】:

    只需使用这个strstr 函数:

    $string= 'some string with - values ';
    if(strstr($string, '-')){
        echo 'symbol is isset';
    }
    

    【讨论】:

    • sergio,虽然您的回答是正确的,但使用 MonkeyZeus 的解决方案占用的内存较少。
    • 同意,这只是解决任务的一种方式
    猜你喜欢
    • 2013-07-16
    • 1970-01-01
    • 2011-03-31
    • 2016-08-09
    • 1970-01-01
    • 2019-12-29
    • 2014-05-07
    • 2018-05-01
    相关资源
    最近更新 更多