Поиск в переменной PHP и запись найденного слова

1 234
[Удален]
#21
danforth:
miltorg, при том, что если в базе появится +500 городов, вы на каждый напишете регулярку?
...
preg_match('москв', $text)
preg_match('казан', $text)
...

Зачем? Там одна регулярка.

danforth
На сайте с 18.12.2015
Offline
153
#22
miltorg:
Зачем? Там одна регулярка.

Какая? Название города без последней буквы?

Junior Web Developer
[Удален]
#23
danforth:
Какая? Название города без последней буквы?

Извините. Но обучение - платное

---------- Добавлено 13.12.2016 в 20:16 ----------

danforth:
Город Москва, как и москва, существует. Просто допущена ошибка в написании. Страшно представить что было-бы, если бы вы писали поисковый алгоритм Google.
- кинотеатры казани
- 0 результатов

---------- Добавлено 13.12.2016 в 19:51 ----------


Так а я и не говорю что он мудак, просто задачка для мозга: как разбирать морфологию и определять опечатки в словах. Молодец что помог, безусловно.

Казань сделал

---------- Добавлено 13.12.2016 в 20:27 ----------

Сделал Москву с маленькой и большой буквы

---------- Добавлено 13.12.2016 в 20:31 ----------

Сделал все города с любой буквы

danforth
На сайте с 18.12.2015
Offline
153
#24
miltorg:
Извините. Но обучение - платное

Так это я вас обучаю. Если регулярка заключается в том, чтобы убрать последнюю букву у слова, типа "Москв", то да, прокатит. Для склонения слова Москва. Но не прокатит для склонения, например, Ростова-на-Дону. Ваша регулярка не сработает на "Ростов-на-Дон" в случае, если Петя решит отпраздновать Новый год в Ростове-на-Дону.

S
На сайте с 30.09.2016
Offline
469
#25

А можно и я поумничаю? :D

miltorg:
Сделал все города с любой буквы

А ещё можно выделить капсом МОСКВА, и забыть про капслок мОСКВА - для всего этого в функциях есть буковка "i".

miltorg:
$rub = preg_replace("/ /","",$u[1]);
Для этого есть str_replace() - менее ресурсоёмкая функция.

А вообще, разговор в значительной степени беспредметен, потому что решение очень сильно зависит от постановки задачи. А задачу ТС поставил очень и очень туманно. Поэтому и решение может занять от нескольких строк до 100500 строк.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
[Удален]
#26
Sitealert:
А можно и я поумничаю? :D

А ещё можно выделить капсом МОСКВА, и забыть про капслок мОСКВА - для всего этого в функциях есть буковка "i". Для этого есть str_replace() - менее ресурсоёмкая функция.

А вообще, разговор в значительной степени беспредметен, потому что решение очень сильно зависит от постановки задачи. А задачу ТС поставил очень и очень туманно. Поэтому и решение может занять от нескольких строк до 100500 строк.

На русском языке у меня не срабатывает

---------- Добавлено 13.12.2016 в 22:31 ----------

danforth:
Так это я вас обучаю. Если регулярка заключается в том, чтобы убрать последнюю букву у слова, типа "Москв", то да, прокатит. Для склонения слова Москва. Но не прокатит для склонения, например, Ростова-на-Дону. Ваша регулярка не сработает на "Ростов-на-Дон" в случае, если Петя решит отпраздновать Новый год в Ростове-на-Дону.

Сделал Ростов на Дону:

http://chajnik.ru/php-primer

Петя может ехать :-)

S
На сайте с 30.09.2016
Offline
469
#27
miltorg:
На русском языке у меня не срабатывает

Ну да... Буржуйский пыхапэ русский кирилиц плохо понимай...

Но есть одна хитрость

<?php
setlocale(LC_ALL, 'ru_RU.CP1251');
$txt='отпраздновать Новый год в кинотеатре МоСкве за 30000 рублей, хотя Маша предлагала';
$pat= '#моск\w+ #i';
preg_match($pat,$txt,$arr); echo $arr[0];

По крайней мере на российском сервере на линуксе с кодировкой файлов cp1251 работает.

На UTF8 - так не пойдёт.

[Удален]
#28
Sitealert:
Ну да... Буржуйский пыхапэ русский кирилиц плохо понимай...
Но есть одна хитрость
<?php

setlocale(LC_ALL, 'ru_RU.CP1251');
$txt='отпраздновать Новый год в кинотеатре МоСкве за 30000 рублей, хотя Маша предлагала';
$pat= '#моск\w+ #i';
preg_match($pat,$txt,$arr); echo $arr[0];

По крайней мере на российском сервере на линуксе с кодировкой файлов cp1251 работает.

Локаль. Я думал про это. Но не знал что она в регулярках срабатывает.

Кстати не на всех серверах установлена русская локаль.

И кодировка там Юнкод

---------- Добавлено 13.12.2016 в 22:44 ----------

Sitealert:
Ну да... Буржуйский пыхапэ русский кирилиц плохо понимай...
Но есть одна хитрость
<?php

setlocale(LC_ALL, 'ru_RU.CP1251');
$txt='отпраздновать Новый год в кинотеатре МоСкве за 30000 рублей, хотя Маша предлагала';
$pat= '#моск\w+ #i';
preg_match($pat,$txt,$arr); echo $arr[0];

По крайней мере на российском сервере на линуксе с кодировкой файлов cp1251 работает.
На UTF8 - так не пойдёт.

Проверил. - Не работает.

Я заборю Верхний регистр - это не сложно

S
На сайте с 30.09.2016
Offline
469
#29
miltorg:
Проверил. - Не работает.

Сочувствую. Я на джиновском хостинге проверил - там всё окей.

R
На сайте с 20.02.2015
Offline
59
#30
miltorg:

Проверил. - Не работает.
Я заборю Верхний регистр - это не сложно

модификатор u "#москв\w#"ui и файл должен быть в utf-8

---------- Добавлено 14.12.2016 в 00:54 ----------

А вообще есть куча либ чтобы привести слово к базовой форме. Тот же phpmorphy

1 234

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