На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ALXR
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
    > PHP: регулярные выражения , помогите новичку
      Привет всем !!!

      Начал изучать регулярные выражения и сразу же столкнулся с проблемой составления нужного мне выражения. Требуется подсказка :yes: Итак, мне нужно выделить текст, который находится внутри определённого набора символов. Например, мне нужно найти в документе все ссылки:
      ExpandedWrap disabled
        ...
        $s1 = "<a href=";
        $s2 = ">";
        $str = '<a href="http://www.mysite.net/script?searchtext=string&form_type=simple">My string</a>';
        ...

      Как мне выделить из $str ссылку, то есть текст находящийся между строками $s1 и $s2 ?
        PHP FAQ: Регулярные выражения.
        Там и далее имеются примеры готовых решений.

        Добавлено
        Цитата bur80 @
        Требуется подсказка
        Подсказка - это когда ты что-то сделал, но у тебя какой-то непонятный затык. Поэтому когда просишь подсказку - разумно демонстрировать свои попытки решить проблему.
          Я помню как я читал мануалы о регулярных выражениях и ничего немог понять. ;)

          Я привык работать с PERL compatible выражениями, т.к. они имеют больше возможностей и гораздо быстрее.
          В данном случае я бы сделал так:
          ExpandedWrap disabled
            $count_of_array = preg_match_all("/<a href=(.*)>/U","<a href=\"jkghsdj\"></a>", $ee, PREG_PATTERN_ORDER);
            echo $ee[1][0];

          Обясню как что работает! preg_match_all возвращяет все совпадения в массив $ee, PREG_PATTERN_ORDER - флаг, каторый озночает что $ee[0][$j] содерзчит полные совпадения, а $ee[1][$j] - совпадения первой подмаски (подмаска ето то что в регулиарном выражении в скобках - т.е. (.*)). знак .* означает все символы. А вообще почитай о регулярных выражениях тут, и о функциях в PHP, каторые работают с регулярными выражениями (тут)
            Цитата SiMM @
            PHP FAQ: Регулярные выражения.
            Там и далее имеются примеры готовых решений.

            Добавлено
            Цитата bur80 @
            Требуется подсказка
            Подсказка - это когда ты что-то сделал, но у тебя какой-то непонятный затык. Поэтому когда просишь подсказку - разумно демонстрировать свои попытки решить проблему.

            Изучаю документацию, будут вопросы - задам в этой ветке. :rolleyes:
              Документации, как всегда, море :wacko: Помогите составить регулярку. Скажем, есть строка "мы делили апельсин, много наших полегло". Мне нужно вывести слово, в котором содержиться строка апел, то есть в результате я должен получить слово апельсин. Как ? :wall:

              Добавлено
              Edva, не совсем удачный для меня пример :( Мне нужны примеры поиска позиции начала/конца определённого слова в строке и т.п. ;)
                Цитата bur80 @
                Документации, как всегда, море Помогите составить регулярку. Скажем, есть строка "мы делили апельсин, много наших полегло". Мне нужно вывести слово, в котором содержиться строка апел, то есть в результате я должен получить слово апельсин. Как ?

                ExpandedWrap disabled
                  <?
                  $s = "мы делили апельсин, много наших полегло";
                  preg_match("/(апел[^\W]+)/i", $s, $matches);
                  echo $matches[1];
                  ?>

                Так?
                  Цитата bur80 @
                  Мне нужны примеры поиска позиции начала/конца определённого слова в строке и т.п.

                  т.е. тибе нужен номер позиции начала и конца?
                    Цитата
                    т.е. тибе нужен номер позиции начала и конца?

                    И это тоже :yes: Вообще, неплохо было бы иметь готовые примеры решения различных, наиболее типичных, задач. Ну, для самообучения естественно. :whistle:

                    Добавлено
                    Цитата Mastilior @
                    Цитата bur80 @
                    Документации, как всегда, море Помогите составить регулярку. Скажем, есть строка "мы делили апельсин, много наших полегло". Мне нужно вывести слово, в котором содержиться строка апел, то есть в результате я должен получить слово апельсин. Как ?

                    ExpandedWrap disabled
                      <?
                      $s = "мы делили апельсин, много наших полегло";
                      preg_match("/(апел[^\W]+)/i", $s, $matches);
                      echo $matches[1];
                      ?>

                    Так?

                    Да, спасибо :yes:
                      Цитата

                      примеры поиска позиции начала/конца определённого слова в строке
                      почитай про
                      \b - соответствует границе слова(то есть точке между символом слова и символом не входящим в состав слова)
                      \B - соответствует позиции, которая не явл. границей слова
                      может тебе это облегчит задачу...
                        Дж. Фридл, Регулярные выражения, библиотека программиста, 2е издание, Изд. Питер, 2003
                        http://unix.onanizm.ru/misc/regexp.djvu
                          Цитата SiMM @
                          Дж. Фридл, Регулярные выражения, библиотека программиста, 2е издание, Изд. Питер, 2003
                          http://unix.onanizm.ru/misc/regexp.djvu

                          Скачал, а что это за формат такой djvu ? Открыть бы теперь :)
                            Читалку можно взять, например, здесь
                            DjVuWebBrowserPlugin_EN.exe - плагин к IE.
                            DjVuSolo3.1-noncom.exe - отдельное приложение.
                              Чтобы найти слово содержащее некоторый символ мы используем такую комбинацию:
                              Цитата
                              "/(апел[^\W]+)/i"
                              , а что если мне нужно задать ещё одно условие, как в этом случае будет выглядеть выражение ?

                              Добавлено
                              Ещё мне требуется наиболее полная таблица метасимволов, которые используются в регулярных выражениях :rolleyes:

                              Добавлено
                              SiMM, спасибо за ссылки 8-)
                                Цитата bur80 @
                                а что если мне нужно задать ещё одно условие
                                Какое?
                                Цитата bur80 @
                                Ещё мне требуется наиболее полная таблица метасимволов, которые используются в регулярных выражениях

                                PHP Manual: Регулярные выражения в деталях - Метасимволы
                                  Цитата
                                  Какое?

                                  Мне нужно сделать что-то типа:
                                  Цитата
                                  /условие1/и/условие2/

                                  Иными словами, как задать 2 условия в одном выражении и каким символом они должны быть разделены ? :huh:
                                  1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                  0 пользователей:


                                  Рейтинг@Mail.ru
                                  [ Script execution time: 0,0373 ]   [ 14 queries used ]   [ Generated: 19.05.24, 16:37 GMT ]