Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Регулярные выражения
 
 автор: n1ko   (10.12.2012 в 21:16)   письмо автору
 
 

Добрый вечер, форумчане. Нужна Ваша экстренняя помощь!
Есть три строки:
1) price
2) price1
3) price1_1

Как распознать каждую из них и занести в соответствующие массивы?
1) array('section' => 'price')
2) array('section' => 'price', 'group' => 1)
3) array('section' => 'price', 'group' => 1, 'id' => 1)

Я упал на поиске соответсвий уже в первой строке.
preg_match('/^[a-zA-Z]$/', 'price') - Выдаёт false...

Спасибо всем заранее!

  Ответить  
 
 автор: n1ko   (10.12.2012 в 21:37)   письмо автору
 
   для: n1ko   (10.12.2012 в 21:16)
 

Первую строку вычислил! Забыл знак "+" перед долларом!

  Ответить  
 
 автор: n1ko   (10.12.2012 в 21:42)   письмо автору
 
   для: n1ko   (10.12.2012 в 21:16)
 

Вторую строчку обнаружил следующим способом: '/^([a-z])+([0-9])+$/'
А третья сдалась при данной регулярке: '/^([a-z])+([0-9])+(_)+([0-9])+$/'

Итого:

if (preg_match('/^[a-z]+$/', $request[1])) {
echo 'Раздел';
} else if (preg_match('/^([a-z])+([0-9])+$/', $request[1])) {
echo 'Раздел | Группа';
} else if (preg_match('/^([a-z])+([0-9])+(_)+([0-9])+$/', $request[1])) {
echo 'Раздел | Группа | ИД';
} else {
echo 'Выпад';
}

Если что-то можно сделать чище и лучше - буду рад выслушать!
Осталось разбить на массивы.

  Ответить  
 
 автор: n1ko   (10.12.2012 в 21:55)   письмо автору
 
   для: n1ko   (10.12.2012 в 21:16)
 

Смешно... Пока ждал - решил вопрос своими силами :) Всё работает, выпадает на строках, которые не соответствуют запросам!


if (preg_match('/^([a-z]{1,})+$/', $request[1], $result)) {
    echo print_r($result);
  } else if (preg_match('/^([a-z]{1,})([0-9]{1,})+$/', $request[1], $result)) {
    echo print_r($result);
  } else if (preg_match('/^([a-z]{1,})([0-9]{1,})_([0-9]{1,})+$/', $request[1], $result)) {
    echo print_r($result);
  } else {
    echo 'Выпад';
  }


Модераторы, можете удалить этот пост :)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования