if(strpos($search, "new york") !== FALSE){
//do something
}
else if(strpos($search, "Los Angeles") !== FALSE){
//do something
}...//keep going
我使用strpos来过滤用户的输入文本。如果用户已输入匹配城市,则会执行某些操作
但是会有很多城市。
如果声明变得很长,它会降低速度。有更好的方法吗?
Switch语句可能会中断,但在这种情况下我不知道如何使用switch + strpos。
答案 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是否在数组中。