Получить название города из массива строк PHP

У меня есть массив, содержащий несколько строк, каждая строка содержит название города.

Название города иногда встречается в начале строки, иногда в середине, а иногда и в конце строки.

Вопрос

Как создать новый массив, содержащий только названия городов?

$messagesStrings = [
    'H…cus',
    'Fire reported in the main market in Mogadishu',
    'Funtimes in Ibiza',
    'Lovely shisa in Cairo,Egypt',
    'Blimey! Protests in Tahrir , can't go home',
    'Stuck in traffic in Nairobi',
    'Kathmandu is beatiful',
    'Lovely football at the Bernabau, Madrid, Spain',
    'I hate my government, Athens',
    'Life is full of surprises in Istanbul'
];

У вас есть список или БД всех возможных городов?

Eddie 11.06.2018 05:25

Вы можете попробовать токенизировать свои строки, чтобы отфильтровать существительные, а затем выяснить, есть ли это место, используя какую-нибудь службу, подобную этой Ссылка на географию

Chris Aby Antony 11.06.2018 14:40
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
307
2

Ответы 2

Попробуй это:

$messagesStrings = [
    'H…cus',
    'Fire reported in the main market in Mogadishu',
    'Funtimes in Ibiza',
    'Lovely shisa in Cairo,Egypt',
    'Blimey! Protests in Tahrir , can\'t go home',
    'Stuck in traffic in Nairobi',
    'Kathmandu is beatiful',
    'Lovely football at the Bernabau, Madrid, Spain',
    'I hate my government, Athens',
    'Life is full of surprises in Istanbul'
];

$regex = '/Madrid|Spain|Ibiza/';

preg_match_all($regex, implode(' ', $messagesStrings), $matches);

var_dump($matches[0]);

Выход

array(3) {
  [0]=>
  string(5) "Ibiza"
  [1]=>
  string(6) "Madrid"
  [2]=>
  string(5) "Spain"
}

Живой пример

Repl

Ну, из-за того, что в строке поиска может быть все, вам понадобится список городов в вашей базе данных, и вы найдете их в самой строке поиска. Если ничего подобного нет, это будет означать, что даже если это будет настоящий город, его не будет в базе данных, и поэтому его нельзя будет туда добраться. Но если вы можете найти похожий, вы можете удалить его из строки поиска и получить подробную информацию о городе из базы данных.

Другие вопросы по теме