За последние 24 часа нас посетили 18596 программистов и 1633 робота. Сейчас ищут 1043 программиста ...

Не работает регулярное выражение по отбору строк в HTML

Тема в разделе "Регулярные выражения", создана пользователем jet22, 26 май 2014.

  1. jet22

    jet22 Новичок

    С нами с:
    26 май 2014
    Сообщения:
    2
    Симпатии:
    0
    Всем привет. Вынужден обратиться на форум, потому что после битых часов тыкания, просто не понимаю в чем я ошибся. Выражение вроде бы должно работать пробовал по разному. В общем от слов к делу:

    Выражение -
    Код (Text):
    1. /(?<=alt\=\")([А-Яа-я]+\s?[А-Яа-я]+)(?=\"\ssrc)/i

    Самая замудренная форма, пробовал также так:

    Код (Text):
    1. /(?<=alt=")[А-Яа-я]+\s?[А-Яа-я]+(?=")/i

    И еще так:

    Код (Text):
    1. /[А-Яа-я]+\s?[А-Яа-я]+/i

    Шаблон регулярного выражения использовал в функции PHP preg_match_all(). Собственно вызов:

    Код (Text):
    1. $metro_mask = '/(?<=alt\=\")([А-Яа-я]+\s?[А-Яа-я]+)(?=\"\ssrc)/i';
    2. $output = array();
    3. preg_match_all($metro_mask,$result,$output);

    В переменную $result приходит содержимое файла metro.html. Прикрепляю. Затем проверяю что получилось с помощью функции var_dump().
    Возвращает такое:

    Код (Text):
    1. array (size=2)
    2.   0 =>
    3.     array (size=0)
    4.       empty
    5.   1 =>
    6.     array (size=0)
    7.       empty

    Использую open server, под windows. Версия PHP 5.3.2.8.
    В общем ребята и девченки, помогите решить проблему!

    Добавлено спустя 6 минут 17 секунд:
    Совсем забыл, вот фрагмент отбираемого кода:

    Код (Text):
    1. <div id="s71" style="position:absolute; left:381px; top:95px; height: 9px;">
    2.         <img id="imm4" alt="Алексеевская" src="/img/obana4.gif" style="cursor:hand; cursor:pointer; position: absolute;">
    3.         <div class="border_round" onclick="JavaScript:mSel(4);" style="width: 67px; height: 9px; cursor:hand; cursor:pointer; position: absolute; top: 0px;"><img style="position: absolute;" src="/img/blank.gif" width="67" height="9" alt=""></div>
    4.     </div>
    5.     <div id="s123" style="position:absolute; left:292px; top:45px; height: 9px;">
    6.         <img id="imm5" alt="Алтуфьево" src="/img/obana4.gif" style="cursor:hand; cursor:pointer; position: absolute;">
    7.         <div class="border_round" onclick="JavaScript:mSel(5);" style="width: 54px; height: 9px; cursor:hand; cursor:pointer; position: absolute; top: 0px;"><img style="position: absolute;" src="/img/blank.gif" width="54" height="9" alt=""></div>
    8.     </div>
     
  2. jet22

    jet22 Новичок

    С нами с:
    26 май 2014
    Сообщения:
    2
    Симпатии:
    0
    В общем решил я задачу, так и не дождавшись ответа. Выражение приобрело такой вид:
    Код (Text):
    1. /(?<=alt\=\")\S+?\s?\S+?(?=\")/s
    Что выдало ответ:

    Код (Text):
    1. array (size=1)
    2.   0 =>
    3.     array (size=184)
    4.       0 => string 'Авиамоторная' (length=24)
    5.       1 => string 'Автозаводская' (length=26)
    6.       2 => string 'Академическая' (length=26)
    7.       3 => string 'Александровский сад' (length=37)
    8.       4 => string 'Алексеевская' (length=24)
    9.       5 => string 'Алтуфьево' (length=18)
    10.       6 => string 'Аннино' (length=12)
    11.       7 => string 'Арбатская' (length=18)
    12.       8 => string 'Арбатская' (length=18)
    Еще раз убеждаюсь что отчаиваться и сдаваться никогда не стоит.
     
  3. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Ну круто. Поздравляю. Хорошо, когда сам находишь решение. Скилл растёт. А пхп не хочешь обновить?