Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с регулярным выражением, Три часа сижу и не вьезжаю - не составля 
:(
    Опции темы
vpokorp
Дата 9.2.2008, 05:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



Есть файл - из него надо по  preg_match_all($pattern, $content, $out);  вытащить переменные в массив.
Никак не могу составить выражение для $pattern чтобы все заработало - где ошибка?

Опыта у меня с ними немного - так что сильно не бейте.
Если поможете - буду Вас вспоминать

Цитата

   <TD width="100%">
            <TABLE class=post cellSpacing=0 cellPadding=0 border=0>
              <TBODY>
              <TR>
                <TD><A 
                  href="http://www.domen.ru/agent?message&amp;[email protected]"><IMG 
                  class=dog1 height=13 src="2.files/status.domen.gif" width=13 
                  align=absMiddle border=0></A> </TD>
                <TD><SPAN class=author><A 
                  href="http://domen.ru/dron/darya-82/">Дарья 
                  Спирина
</A></SPAN> </TD>
                <script>document.write('<td><img src=http://img.domen.ru/1.gif width=4 height=1><a onclick="return userMenuShow(this, event,1)" href="#[email protected]@dron" target="_blank"><img border=0 src="http://help.domen.ru/js/user_arrow_pas.gif" width="13" height="13" alt="Меню пользователя" title="Меню пользователя" align="absmiddle"></a> &nbsp; </td>');</SCRIPT>

                <TD><A 
                  href="http://my.domen.ru/my/friendship?to=darya-82%40dron.ru" 
                  target=_blank><IMG title="мой самый" height=16 
                  alt="Добавить в друзья" src="2.files/ico_addfriend.gif" 
                  width=16 align=absMiddle border=0></A>&nbsp;<A class=t75 
                  href="http://my.domen.ru/my/friendship?to=darya-82%40dron.ru" 
                  target=_blank>Хороша</A> </TD></TR></TBODY></TABLE>
            <H1 class="orange mb2 mt5" id=questext><INDEX>Заголовок текста
            Просто текст
</INDEX></H1>
            <TABLE class="post mb15" cellSpacing=0 cellPadding=0 width="100%">
              <TBODY>
              <TR>
                <TD vAlign=top><SPAN class="tah t70 grey3"><IMG title=открыт 
                  height=16 alt=открыт src="2.files/ico_status_A.gif" width=16 
                  align=absMiddle> Русский текст </SPAN><!--/td>
        <td class=buts width=120--><A 
                  class="t70 orange tah" 
                  href="http://domen.ru/sms/12825370/"><IMG class=ico13 
                  height=17 alt="молодец" src="2.files/ico_star.gif" 
                  width=17 align=absMiddle border=0>Хорошая</A> 
              </TD></TR></TBODY></TABLE>
            <DIV class="t75 mb20"><INDEX>Текст, 
            Длинный длинный текст 
            Очень длинный текст
.</INDEX> 



В массив нужно затащить пять подсвеченных значений. Три первых получается, а дальше - хоть тресни

Для первых трех подходит
Код

$pattern = "/author[^\/]+\/([^\/]+)\/([^\/]+)\/[^>]+>([^<]+)</";




Для 5-х думал подойдет:

Код

$pattern = "/author[^\/]+\/([^\/]+)\/([^\/]+)\/[^>]+>([^<]+)<i*mb2[^>]+>[^>]+>([^<]+)<i*mb2[^>]+>[^>]+>([^<]+)</";



Но увы - ничего не находит. В чем я туплю?

Это сообщение отредактировал(а) skyboy - 9.2.2008, 10:24
PM   Вверх
SelenIT
Дата 9.2.2008, 06:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 8
Всего: 401



Насколько я понял, нужно вытащить ссылку с пометкой "автор" (адрес и содержимое) + содержимое тегов INDEX (в заголовке и в div-е)?

В первом приближении такое срабатывает:
Код

$pattern = '~<SPAN class=author><A[^>]*href="http://[\w.]+/(.*?)"[^>]*>(.*?)</A></SPAN>.*?<H1[^>]*><INDEX>(.*?)</INDEX></H1>.*?<DIV[^>]*><INDEX>(.*?)</INDEX>~si';


Нужные фрагменты будут в "карманах" с первого по четвертый. Только путь из ссылки я бы брал целиком, а потом разбирал с помощью explode - а то есть ли гарантия, что там всегда будут два "каталога"?


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
vpokorp
Дата 10.2.2008, 02:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



Спасибо - работает smile
Но почему-то неожиданно долго - 3 секунды на локалке - для сравнения мой код для поиска 3-х первых элементов срабатывает за доли секунды.
В связи с этим продолжаю спрашивать:
Что за модификатор в конце "si" - без него почему-то вообще не находит.
Из-за чего возникает задержка со временем.
Файл в котором ведется поиск порядка 60 кб

И еще - как обозначается  "вхождение любого количества ЛЮБЫХ знаков", включая переводы строки и прочие

Это сообщение отредактировал(а) vpokorp - 10.2.2008, 02:47
PM   Вверх
vpokorp
Дата 10.2.2008, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



Код

$pattern = "/author[^\/]+\/([^\/]+)\/([^\/]+)\/[^>]+>([^<]+)<.*?<index>(.*?)<\/index>.*?<index>(.*?)<\/index>/ims";


так заработало и быстренько

спасибо
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0448 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.