За последние 24 часа нас посетили 51487 программистов и 1756 роботов. Сейчас ищут 1376 программистов ...

[РЕШЕНО]Шаблон из регулярных выражений mb_eregi+mb_substr!

Тема в разделе "PHP для новичков", создана пользователем Panter7777, 29 ноя 2010.

  1. Panter7777

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

    С нами с:
    10 окт 2010
    Сообщения:
    96
    Симпатии:
    0
    Адрес:
    Киев
    Добрый день!
    Помогите составить правильный шаблон.
    Есть записи нескольких видов:
    ГД-32-2
    ГД-32г-2
    ГД-32/2-2
    ГД-32/2г-2

    Мне нужно вытянуть букву "г"!

    Вот что есть:

    Код (Text):
    1. $adress = 'гд-34г-2';
    2.  
    3. mb_ereg("-([0-9]*[0-9][а-яА-Я]{1})-", $adress, $regs);
    4.  
    5. echo "<br /><hr><br />".$regs[0];
    выдает - "-34Г-" тут уже хотябы можно двигаться дальше...
    но если на писать $adress = 'гд-34/2г-2'; то уже не работает как мне составить шаблон???
     
  2. Panter7777

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

    С нами с:
    10 окт 2010
    Сообщения:
    96
    Симпатии:
    0
    Адрес:
    Киев
    в общем сам разобрался, может кому-то понадобится!

    Код (Text):
    1. $adress = 'мт-24/22а-5'; //как бы не была написана часть  между -***- всегда выделится только буква
    2.  
    3. //Получаем букву дома из адреса
    4. $adress = mb_strtoupper($adress, 'UTF-8');
    5.   mb_ereg("[а-яА-я]{1}-[0-9]{1}$", $adress, $regs);//отделяем символы в месте с буквой с конца строки.
    6.     $adress_letter = mb_substr($regs[0],0,1, 'UTF-8');// первый символ
    7.     $adress_letter = mb_strtolower($adress_letter, 'UTF-8');//делаем маленьким
    8.  
    9.   mb_ereg("(^[а-яА-Я]{1,5})-[^а-яА-Я-]{1,}", $adress, $regs1); //отделяем все до последней буквы с начала строки
    10.     $adress_first = mb_strtoupper($regs1[0], 'UTF-8');//делаем символы большими
    11.  
    12.   mb_ereg("-[0-9]{1}$",$adress, $regs2);
    13.     $adress_last = mb_strtoupper($regs2[0], 'UTF-8');//делаем символы большими
    14.  
    15.  
    16. echo "<br />".$adress_first.$adress_letter.$adress_last."<br />";
    17. //echo $regs1[0].$regs[0].$regs2[0];