За последние 24 часа нас посетили 27989 программистов и 1815 роботов. Сейчас ищут 2272 программиста ...

регулярки соединить в одну

Тема в разделе "PHP для новичков", создана пользователем graf_vorontsov, 12 фев 2012.

  1. graf_vorontsov

    graf_vorontsov Активный пользователь

    С нами с:
    12 фев 2011
    Сообщения:
    183
    Симпатии:
    1
    Адрес:
    Украина, Харьков
    Код (Text):
    1. //первый
    2.  
    3.             (preg_match('/^(9ES|9EL|2BM|8FH|8HL)\s?([\d]{3})\s?([\d]{3})\s?-?([\d]{3})$/si', $_REQUEST['number'])){
    4.                 $return = preg_replace('/^(9ES|9EL|2BM|8FH|8HL)\s?([\d]{3})\s?([\d]{3})\s?-?([\d]{3})$/si', '$1 $2 $3-$4', $_REQUEST['number']);
    5.                
    6.             }elseif
    7.      
    8.             //второй
    9.              
    10.             (preg_match('/^(30|50|08|87)\s?-?([\d]{6})\s?-?([\d]{2})$/si', $_REQUEST['number'])){
    11.                 $return = preg_replace('/^(30|50|08|87)\s?-?([\d]{6})\s?-?([\d]{2})$/si', '$1-$2-$3', $_REQUEST['number']);
    12.                 echo "goetza".$return;  
    13.             }elseif
    14.  
    15.             //третий
    16.          
    17.             (preg_match('/^([\d]{4})[\.]*([\d\w]{2,5})$/si', $_REQUEST['number'])){
    18.                 $return = preg_replace('/^([\d]{4})[\.]*([\d\w]{2,5})$/si', '$1.$2', $_REQUEST['number']);
    19.                
    20.             }elseif
    21.            
    22.             //червёртый
    23.              
    24.             (preg_match('/^(D)\s?([\d]{4})$/si', $_REQUEST['number'])){
    25.                 $return = preg_replace('/^(D)\s?([\d]{4})$/si', '$1$2', $_REQUEST['number']);
    26.                  
    27.             }elseif  
    вот вторая часть кода в которой подставляется то что нашла регулярка
    Код (Text):
    1. foreach($data as $value) {  
    2.                  
    3.                 if (strpos( $value  , $return ) !== false){  
    4.                      
    5.                     //вывод результата в виде таблицы  
    6.                      
    7.                     echo "<td style='padding: 6px;'>$data[0]</td><td style='padding: 6px;'>$data[1]</td><td style='padding: 6px;'>$data[2]</td><td style='padding: 6px;'>$data[3]</td><td style='padding: 6px;'>$data[4]</td>"; //если введены данные, выдать найденый результат                          
    8.                 }
    9.                  
    10.             }  
    интерерует, можно ли соединить регулярные выражения вместе все (вообще можно, но пока не рассматривал подробно)
    меня больше интересует можно ли параметры
    Код (Text):
    1. '$1$2' '$1 $2 $3-$4' '$1.$2'  
    соединить в один(чтобы скрипт при сравнении значений подставлял их к разным шаблонам?)

    или если не соединять ничего, то хоть чтобы если не найдено по одному шаблону искало по другому?

    или лучше искать не регулярным выражением совпадение...?
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    preg_match() - курим третий аргумент
     
  3. graf_vorontsov

    graf_vorontsov Активный пользователь

    С нами с:
    12 фев 2011
    Сообщения:
    183
    Симпатии:
    1
    Адрес:
    Украина, Харьков
    да, спасибо. Похоже то что мне поможет..но :)
    preg_match('/регулярка/', $str, $matches); пока не допру как.
    Я понимаю что $matches это массив получается, а как вписать несколько вариантов регулярки и привязать их к каждому элементу массива...хз + шаблон для каждого случая...
    Примера похожего не найду в инете.
     
  4. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Через массив и цикл сделать разные регулярки и проверить к чему нужно.
     
  5. graf_vorontsov

    graf_vorontsov Активный пользователь

    С нами с:
    12 фев 2011
    Сообщения:
    183
    Симпатии:
    1
    Адрес:
    Украина, Харьков
    ужас :)
    а не затруднит ли вас какой-нибудь примерчик наглядный по этому поводу показать... если можно...
     
  6. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Заполните массив регулярными выражениями и используйте разбор по массиву и уже проверяйте для чего вам потребуется и какое потребуется, обычно отдельно функцию делают и вызывают, что нужно и для чего нужно.
    А не постоянно пишут циклы и массивы.