Last active
November 14, 2017 12:57
-
-
Save Bizunow/64741f9edad9d2a08b3a5edbc693a952 to your computer and use it in GitHub Desktop.
[Detect city] detect russian and ukrainian cities in text #php
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Usage: detectCity("Я живу в Москве"); // return "Москва" | |
function detectCity($text) | |
{ | |
$cities = [ | |
// Россия | |
// Миллионники | |
'Москва' => ['моск', 'msk', 'moskva', 'moscow', 'столица'], | |
'Санкт-Петербург' => ['петербург', 'peterburg', 'petersburg'], | |
'Волгоград' => ['волгоград', 'volgograd'], | |
'Владивосток' => ['владивосток', 'vladivostok'], | |
'Воронеж' => ['воронеж', 'vorone'], | |
'Екатеринбург' => ['екатеринбург', 'ekaterinburg'], | |
'Казань' => ['казан', 'kazan'], | |
'Калининград' => ['калининград', 'kaliningrad'], | |
'Краснодар' => ['краснодар', 'krasnodar', 'krd'], | |
'Красноярск' => ['красноярск', 'krasnoyarsk'], | |
'Нижний Новгород' => ['новгород', 'novgorod'], | |
'Новосибирск' => ['новосибирск', 'novosibirsk'], | |
'Омск' => ['омск', 'omsk'], | |
'Пермь' => ['перм', 'perm'], | |
'Ростов-на-Дону' => ['ростов', 'rostov'], | |
'Самара' => ['самар', 'samara'], | |
'Уфа' => ['уф', 'ufa'], | |
'Челябинск' => ['челябинск', 'chelyabinsk'], | |
// Крупнейшие | |
'Саратов' => ['саратов','saratov'], | |
'Тольятти' => ['тольятти','тольяти','togliatti'], | |
'Ижевск' => ['ижевск','izhevsk'], | |
'Барнаул' => ['барнаул','barnaul'], | |
'Ульяновск' => ['ульяновск','ulianovsk'], | |
'Иркутск' => ['иркутск','irkutsk'], | |
'Хабаровск' => ['хабаровск','khabarovsk'], | |
'Ярославль' => ['ярославль','Iaroslavl'], | |
'Махачкала' => ['махачкала','makhachkala','mahachkala'], | |
'Оренбург' => ['оренбург','orenburg'], | |
'Томск' => ['томск','tomsk'], | |
'Новокузнецк' => ['новокузнецк','novokuznetsk'], | |
'Кемерово' => ['кемерово','kemerovo'], | |
'Астрахань' => ['астрахан','astrakhan'], | |
'Рязань' => ['рязан','riazan','ryazan'], | |
'Пенза' => ['пенз','penza'], | |
'Липецк' => ['липецк','lipetsk'], | |
// Крупные | |
'Тула' => ['тула','tula'], | |
'Киров' => ['киров','kirov'], | |
'Чебоксары' => ['чебоксары','cheboksary'], | |
'Курск' => ['курск','kursk'], | |
'Улан-Удэ' => ['улан-удэ','ulan ude','улан удэ','улан уде'], | |
'Ставрополь' => ['ставрополь','stavropol'], | |
'Магнитогорск' => ['магнитогорск','magnitogorsk'], | |
'Иваново' => ['иваново','ivanovo'], | |
'Брянск' => ['брянск','briansk'], | |
'Сочи' => ['сочи','sochi'], | |
'Белгород' => ['белгород','belgorod'], | |
'Нижний Тагил' => ['нижний тагил','nizhnii tagil'], | |
'Архангельск' => ['архангельск','arkhangelsk'], | |
'Владимир' => ['владимир','vladimir'], | |
'Севастополь' => ['севастополь','sevastopol'], | |
'Чита' => ['чита','chita'], | |
'Калуга' => ['калуга','kaluga'], | |
'Сургут' => ['сургут','surgut'], | |
'Смоленск' => ['смоленск','smolensk'], | |
'Волжский' => ['волжский','volzhskii'], | |
'Курган' => ['курган','kurgan'], | |
'Орел' => ['орел','orel'], | |
'Череповец' => ['череповец','cherepovets'], | |
'Вологда' => ['вологда','vologda'], | |
'Владикавказ' => ['владикавказ','vladikavkaz'], | |
'Саранск' => ['саранск','saransk'], | |
'Мурманск' => ['мурманск','murmansk'], | |
'Якутск' => ['якутск','iakutsk'], | |
'Тамбов' => ['тамбов','tambov'], | |
'Грозный' => ['грозный','groznyi'], | |
'Стерлитамак' => ['стерлитамак','sterlitamak'], | |
'Кострома' => ['кострома','kostroma'], | |
// Украина | |
'Киев' => ['киев', 'kiev', 'київ'], | |
'Харьков' => ['харьков', 'harkov', 'charkov', 'харків'], | |
'Одесса' => ['одесса', 'odessa', 'одеса'], | |
'Днепропетровск' => ['днепропетровск', 'dnepropetrovsk', 'дніпропетровськ'], | |
'Донецк' => ['донецк', 'donetsk', 'донецьк'], | |
'Запорожье' => ['запорожье', 'zaporozhe', 'запоріжжя'], | |
'Львов' => ['львов', 'львов', 'львів'], | |
'Кривой Рог' => ['кривой рог', 'krivoy rog', 'кривий ріг'], | |
'Николаев' => ['николаев', 'nikolaev', 'миколаїв'], | |
'Мариуполь' => ['мариуполь', 'mariupol', 'маріуполь'], | |
'Луганск' => ['луганск', 'lugansk', 'луганськ'], | |
'Винница' => ['винница', 'vinnitsa', 'вінниця'], | |
'Макеевка' => ['макеевка', 'makeevka', 'макеевка'], | |
'Херсон' => ['херсон', 'herson', 'херсон'], | |
'Чернигов' => ['чернигов', 'chernigov', 'чернигов'], | |
'Полтава' => ['полтава', 'poltava'], | |
'Черкассы' => ['черкассы', 'cherkassyi', 'черкаси'], | |
'Горловка' => ['горловка', 'gorlovka', 'горловка'], | |
'Житомир' => ['житомир', 'zhitomir'], | |
'Сумы' => ['сумы', 'sumyi', 'суми'], | |
// СНГ | |
'Ташкент' => ['ташкент', 'tashkent'], | |
'Баку' => ['баку', 'baku'], | |
'Минск' => ['минск', 'minsk'], | |
'Брест' => ['брест', 'brest'], | |
'Алма-Ата' => ['алма-ата', 'alma-ata'], | |
'Ереван' => ['ереван', 'erevan'], | |
'Тбилиси' => ['тбилиси', 'tbilisi'], | |
'Талин' => ['талин', 'talin'], | |
'Вильнюс' => ['вильнюс', 'vilnius'], | |
'Астана' => ['астана', 'astana'], | |
'Рига' => ['рига', 'riga'], | |
'Бишкек' => ['бишкек', 'bishkek'], | |
'Кишинев' => ['кишинев', 'kishinev'], | |
'Душанбе' => ['душанбе', 'dushanbe'], | |
'Ашхабад' => ['ашхабад', 'ashkhabad'], | |
]; | |
$text = mb_strtolower($text); | |
foreach ($cities as $cityName => $cityWordRoots) { | |
foreach ($cityWordRoots as $cityWordRoot) { | |
if (strpos($text, $cityWordRoot) !== false) { | |
return $cityName; | |
} | |
} | |
} | |
return false; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment