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

时间:2013-12-24 03:30:52

标签: php

if(strpos($search, "new york") !== FALSE){
    //do something
}
else if(strpos($search, "Los Angeles") !== FALSE){
    //do something
}...//keep going

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

但是会有很多城市。

如果声明变得很长,它会降低速度。有更好的方法吗?

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

2 个答案:

答案 0 :(得分:1)

也许你应该这样做:

$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)) {
  echo '<pre>';
  print_r($matches);
  echo '</pre>';
}

我的示例中的输出将是:

Array
(
    [0] => Array
        (
            [0] => new york
            [1] => los angeles
        )

)

或者没有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 />';
  }
}

现在只需提出逻辑来处理$matched_value&amp;你去吧。

答案 1 :(得分:-1)

你可以将你的城市保存在数组中,只需使用in_array函数来检查$ search是否在数组中。