Удалить лишнее - PHP

D
На сайте с 28.06.2008
Offline
1114
408

Есть строки вида:

Hog Heaven,Moscow,Moskou,Moskov,Moskva,Paradise Valley,S'maqw'l,masko,moseuko,mosuko,mskw aydahw,mwskw,Москва,Москов,Москоу,ماسکو، ایڈاہو,مسکو، آیداهو,موسكو,मस्को,მოსკოვი,モスコー,모스코

Мне нужно оставить только

Москва

это в идеале, ну или хотя бы только киррилица, далее я уж соображу как

Samail
На сайте с 10.05.2007
Offline
369
#1

Как скрипт должен "понять" что нужна именно Москва, а не Москов?

D
На сайте с 28.06.2008
Offline
1114
#2

Думаю в начале отсеять латиницу, а дальше буду думать..

Gerga
На сайте с 02.08.2015
Offline
94
#3

Dram, как вариант:

 
$str = "Hog Heaven,Moscow,Moskou,Moskov,Moskva,Paradise Valley,S'maqw'l,masko,moseuko,mosuko,mskw aydahw,mwskw,Москва,Москов,Москоу,ماسکو، ایڈاہو,مسکو، آیداهو,موسكو,मस्को,მოსკოვი,モスコー,모스코
";

$patterns = array(
'/[^а-я,]/ui',
'/,,/',
);

$replace = '';

$result = preg_replace($patterns, $replace, $str);
D
На сайте с 28.06.2008
Offline
1114
#4

Gerga, спс буду пробовать!

Samail
На сайте с 10.05.2007
Offline
369
#5
Dram:
Думаю в начале отсеять латиницу, а дальше буду думать..

Ну а вообще что там нужно оставить? Название города на русском и без ошибок? Они всегда запятыми разделены?

Если так, то можно сделать из строки массив и сравнить его с массивом городов.

$array1 = array("Лондон","Самара","Чикаго","Киев", "Москва", "Иваново");

$str = "Hog Heaven,Moscow,Moskou,Moskov,Moskva,Paradise Valley,S'maqw'l,masko,moseuko,mosuko,mskw aydahw,mwskw,Москва,Москов,Москоу,ماسکو، ایڈاہو,مسکو، آیداهو,موسكو,मस्को,მოსკოვი,モスコー,모스코";
$array2 = explode(",", $str);

$result = array_intersect($array1, $array2);
print_r($result);

Или так:

$array1 = array( "Лондон", "Самара", "Чикаго", "Киев", "Москва", "Иваново" );

$str = "Hog Heaven,Moscow,Moskou,Moskov,Moskva,Paradise Valley,S'maqw'l,masko,moseuko,mosuko,mskw aydahw,mwskw,Москва,Москов,Москоу,ماسکو، ایڈاہو,مسکو، آیداهو,موسكو,मस्को,მოსკოვი,モスコー,모스코";
$array2 = explode( ",", $str );

foreach ( $array2 as $v ) {
if ( in_array( $v, $array1 ) ) {
$city = $v;
break;
}
}
echo $city;

Если нужно что-то другое, то уточните что именно.

D
На сайте с 28.06.2008
Offline
1114
#6

Samail, то что нужно спс!

Gerga
На сайте с 02.08.2015
Offline
94
#7

Samail, верно.

Dram, название всех городов лучше хранить в файлике, например cities.data.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий