如何发现如果两个字符是在一个数组php


How to find if two characters are in an array php

我希望开发一个搜索功能,允许用户只搜索项目,或修改他们的搜索与括号中的价格范围。也就是说,如果他们正在寻找一辆汽车,那么他们可以输入car并接收数据库中所有的汽车,也可以输入car(100,299)或car(100,299)并只接收数据库中价格范围在100到299之间的汽车。

之前,我做了三个不同的爆炸函数调用,但这很麻烦,看起来非常丑陋。我还尝试将括号放入数组中,然后将其与搜索的单词进行比较(单词基本上是字符数组),但这不起作用。最后,我一直在阅读strpos和substr,但它们似乎不符合要求,因为strpos返回字符的第一次出现,而substr在特定发生后返回指定长度内的字符。

举个例子,strpos的问题是用户可以输入括号,然后调用搜索函数,天知道是什么。例如,substr的问题是价格范围变化很大

您可以使用preg_match来解析搜索字符串-我假设这是您遇到问题的部分。

if (preg_match('/car ?'(([^,]+), ?([^')]+)')/', $search_text, $matches)) {
    $low_price = $matches[1];
    $high_price = $matches[2];
    //do your price filtering here
}

正则表达式可能需要一点调整,我不记得在字符类中括号是否需要转义。

是的,Sam是对的。您应该使用正则表达式来完成此操作。

在文档

中查找preg_match()

要完成他的回答,您的情况的正则表达式是:

$regex = "^([a-zA-Z]+)'s'(([0-9]+),([0-9]+)')$"
if (preg_match($regex, $search_text, $matches)) {
    $type = $matches[0];
    $low_price = $matches[1];
    $high_price = $matches[2];
    //do your price filtering here
}

要小心,因为包含匹配的数组从索引0开始,而不是1。