PHP& MySql匹配字符串中的Word / Phrase

时间:2017-01-18 09:08:01

标签: php mysql string search

我在带有城市的MySql中有一个表。

|---------------------|------------------|
|          ID         |     City         |
|---------------------|------------------|
|          1          |     Berlin       |
|---------------------|------------------|
|          2          |     Los Angeles  |
|---------------------|------------------|
|          3          |     Shanghai     |
|---------------------|------------------|

我在Php中有一个字符串,如下所示: $ string ="我喜欢柏林和洛杉矶。"

现在我想查看MySql-Database,如果String包含City / Cities。 但我不知道什么是最好的解决方案。将城市列表作为Json文件可能更好或者更快更好吗?

2 个答案:

答案 0 :(得分:3)

您使用mysql查询进行检查。

Select * from table_name where match(City) against ('I like Berlin and Los Angeles')

或者您可以使用

Select * from table_name where city like '%I like Berlin and Los Angeles%'

我修改了查询,因为你需要它的排序机制。

Select *,(match(City) against ('I like Los Angeles  and Berlin')) as relevance  from city 
where match(City) against ('I like Los Angeles and  Berlin') ORDER BY relevance ASC;

它会让你对表中的城市进行排序。

答案 1 :(得分:0)

您应该将所有城市从数据库转移到数组然后检查它。

$cities = ['Berlin', 'Los Angeles', 'Shanghai'];
$string = 'I like Berlin and Los Angeles.';
$result = [];
$pattern = '/('.implode('|', $cities).')/';
preg_match_all($pattern, $string, $result);

示例:http://phpio.net/s/2t70