如果PHP语句太长,请减慢速度

如果PHP语句太长,请减慢速度,php,Php,我已经使用strpos来过滤用户的输入文本。如果用户已输入匹配城市,它将执行某些操作 然而,将会有很多城市 如果语句变得很长,则会减慢速度。有更好的方法吗 Switch语句可能会中断,但我不知道在这种情况下如何使用Switch+strpos。您可以将城市保留在数组中,只需使用in_数组函数检查数组中是否有$search。也许您应该这样做: if(strpos($search, "new york") !== FALSE){ //do something } else if(strpos(

我已经使用strpos来过滤用户的输入文本。如果用户已输入匹配城市,它将执行某些操作

然而,将会有很多城市

如果语句变得很长,则会减慢速度。有更好的方法吗


Switch语句可能会中断,但我不知道在这种情况下如何使用Switch+strpos。

您可以将城市保留在数组中,只需使用in_数组函数检查数组中是否有$search。

也许您应该这样做:

if(strpos($search, "new york") !== FALSE){
    //do something
}
else if(strpos($search, "Los Angeles") !== FALSE){
    //do something
}...//keep going
或者,如果不使用
print\r
,您只需在阵列中滚动并
echo
如下所示:

$search ="I live in new york but I am moving to los angeles one day.";

$cities_array = array('new york', 'los angeles');
$cities_regex = sprintf('[%s]', implode('|', $cities_array));

if (preg_match_all($cities_regex, $search, $matches)) {
  foreach($matches[0] as $matched_key => $matched_value) {
    echo $matched_value . '<br />';
  }
}
$search=“我住在纽约,但有一天我要搬到洛杉矶。”;
$cities_array=array(‘纽约’、‘洛杉矶’);
$cities_regex=sprintf('[%s]',内爆('|',$cities_数组));
if(preg_match_all($cities_regex,$search,$matches)){
foreach($matches[0]为$matched\u key=>$matched\u value){
回显$matched_值。“
”; } }

现在,只要拿出逻辑来处理
$matched_value
&你就可以了。

为什么不使用选择选项来选择城市,只匹配城市或他们的键呢?用户选择的城市太多了,这不是一个好主意。使用正则表达式,匹配备选方案
(洛杉矶|纽约)
,然后使用
开关
。正如埃米利奥所说,我会重新考虑一下。比赛将比你想象的更难(不同的情况、拼写错误等)。自动完成怎么样?对于一长串的城市:
自动完成
。问题是不同的城市会做不同的事情things@Nyaro,这是一个评论。没有答案。
Array
(
    [0] => Array
        (
            [0] => new york
            [1] => los angeles
        )

)
$search ="I live in new york but I am moving to los angeles one day.";

$cities_array = array('new york', 'los angeles');
$cities_regex = sprintf('[%s]', implode('|', $cities_array));

if (preg_match_all($cities_regex, $search, $matches)) {
  foreach($matches[0] as $matched_key => $matched_value) {
    echo $matched_value . '<br />';
  }
}