дополнительные параметры в CASE

Статус
В этой теме нельзя размещать новые ответы.

domian

Постоялец
Регистрация
1 Авг 2007
Сообщения
70
Реакции
5
Имеется вот такой CASE. Собственно, скрипт получает собщение содержащее параметр "пицца", и что-то делает.
PHP:
case 'пицца': 
         { 
        действия по этому параметру	 
	 
         } 
        break;

Мне нужен такой же блок который бы обрабатывал все запросы начинающиеся со слова "пицца", предположим - пицца #название_пиццы #адрес доставки.

Знаю что с помощью регулярных выражений делается, но не могу подобрать, постоянно ругается на что-либо. помогите :(
 
если я правильно понял, то так

PHP:
switch (preg_match('/^пицца\s/',$str)) {
case 0 :
    echo "нет пиццы<br><br>";
    break;
case 1:
    echo " есть пицца<br><br>";
    break;
}
 
есть условие CASE 'пицца'
а мне нужны условия CASE типа 'пицца #название_пиццы #адрес доставки #фамилия'
и скрипт выполняет то что я ему заложил в тело CASE
#название_пиццы #адрес доставки #фамилия - будут менятся
 
Так надо выдрать из строки #название_пиццы #адрес доставки #фамилия, или всеже конструкции case проверить, начинается ли строка с определенного слова? Если второе, то:
PHP:
switch (true) { 
case preg_match('/^пицца\b/',$str) : 
    echo "пица"; 
    break; 
case preg_match('/^шаурма\b/',$str) : 
    echo "шаурма"; 
    break; 
}
 
Вот приблизительный код который есть сейчас
PHP:
switch($req) 
     {	
case 'пицца': 
            { 
            echo('пицца'); 
           } 
        break;
default:
{
echo('привет');
}
break;
}
Мне нужно построить еще один CASE чтобы он обрабатывал все запросы начинающиеся со слов "пицца" и что-то с этими запросами я сам мог делать, к примеру выводить в echo().
То есть для примера запросы:
пицца белая ул. Карла-Маркса 14 4 Валентин Смирнов
пицца помидорная ул. Советская 90 Евгений Новиков
 
case можно делать вложенными
сначала убедились что это пицца а не хотдог, потом следующее слово.

Но что-то мне подсказывает что задача изначально не верна
Заказы надеюсь в базе хранятся?
 
Тогда поставь в switch выражение true, и проверяй в case как в моем примере.
Впрочем, если задача состоит в том, чтобы написать как можно меньше строчек кода, можно добавить примерно такой case (preg_match('/^пицца\b/',$req)?$req:$req.'!')
 
case можно делать вложенными
сначала убедились что это пицца а не хотдог, потом следующее слово.

Но что-то мне подсказывает что задача изначально не верна
Заказы надеюсь в базе хранятся?

Заказы нигде не хранятся, они через прикрученного ICQ бота на классе destym отправляются администратору.

Добавлено через 59 минут
Впрочем, если задача состоит в том, чтобы написать как можно меньше строчек кода, можно добавить примерно такой case (preg_match('/^пицца\b/',$req)?$req:$req.'!')

получается что при запросе просто "пицца" - он выводит "Прайс пиццерии"

PHP:
case 'пицца': 
           { 
            echo('Прайс пиццерии'); 
          } 
        break;

case (preg_match('/^пицца\b/',$req)?$req:$req.'!'):
	 {
	 echo('Заявка на '.$req.'принята.');
	 }
	 break;
А при запросе "пицца белая ул. Карла-Маркса 14 4 Валентин Смирнов"
он вываливается в ответ по условию default :confused:
 
Я так и не понял, нужно проверить на наличие слова "пицца", или нужно разобрать строку "пицца белая ул. Карла-Маркса 14 4 Валентин Смирнов" и выделить из нее улицу и фамилию?

Если первое, то уже привели выше, если второе, то можно сделать например так:

PHP:
$req = 'пицца белая ул. Карла-Маркса 14 4 Валентин Смирнов';

preg_match('/^(пицца\s(?:\w*))\s(.*)/', $req, $matches);

/*$matches = array
       0 => string 'пицца белая ул. Карла-Маркса 14 4 Валентин Смирнов'
       1 => string 'пицца белая'
       2 => string 'ул. Карла-Маркса 14 4 Валентин Смирнов' */
 
нужно при запросе слова пицца чтобы выодился предположим прайс-лист этих пицц,
а при запросе по подобию: пицца белая ул. Карла-Маркса 14 4 Валентин Смирнов, где к слову пицца добавляются еще параметры #название_пиццы #адрес доставки #фамилия выводилось echo() предположим "Заявка принята " и служебные отметки, которые я задаю

Текущая структура обрабатывает запросы и с параметрами(фамилии и адреса) и без, но при запросе с параметром скрипт отдает default для свитча, а никак не то что я прописал в
PHP:
case (preg_match('/^пицца\b/',$req)?$req:$req.'!'): 
     { 
     echo('Заявка на '.$req.'принята.'); 
     } 
     break;
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху