nastya97core
@nastya97core
Начинающий программист

Как через регулярные выражения узнать, есть ли слово, а потом разобрать на составляющие?

Здравствуйте. Есть строчка такого типа:
"юр. пансионат солнышко 77"

его состав: юр. - название компании - регион.
Мне нужно узнать, содержит ли строчка слово "юр.", и если содержит - достать в две переменные: название компании и его регион.
Я действую сейчас так:
$inMsg = "юр. пансионат солнышко 77";
$inMsgEx = explode(' ', $inMsg); // рублю на массив
	if ($inMsgEx[0] == "юр.") { // проверяю первый элемент
		$reqRegion = array_pop($inMsgEx); // достаю последний
		array_shift($inMsgEx); // обрубаю начало
		$reqName = implode(' ', $inMsgEx); // собираю в кучу
	} // перфекционист плачет...

оно работает, но это костыль. мне не нравится эта дичь с разбором строки на массив, а потом сбором его обратно.
помогите пожалуйста с регуляркой. мысль такая:
если (регулярное выражение на наличие "юр.") {
регулярное выражение, которое достаёт всё, что после "юр." в одну переменную, 
а последнее число - в другую
}
  • Вопрос задан
  • 71 просмотр
Решения вопроса 2
@generate
...
Есть ли слово можно узнать stristr. Я новичек в regexr, но так работает.
$str = 'юр. пансионат солнышко 77';

if (stristr($str, 'юр.')) {
	preg_match('#юр\.\s(.*?)\s(\d+)#', $str, $match);
	$name = $match[1]; //Название
	$nubmer = $match[2]; //Номер
	print_r($match);
}
Ответ написан
nastya97core
@nastya97core Автор вопроса
Начинающий программист
if (preg_match("~юр\.\h(.+?)\h+(\d+)$~", $inMsg, $reqData)) {
echo $reqData[1]; 
echo $reqData[2];
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
WblCHA
@WblCHA
/^юр\.\s([\wА-ЯЁа-яё]+(?:\s+[\wА-ЯЁа-яё]+)*)\s(\d+)$/
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы