Preg_match "вылетает"

Тема в разделе "PHP программирование", создана пользователем -, 24 сен 2009.

Статус темы:
Закрыта.
  1. Гость

    Составил регулярное выражение
    Код (php): скопировать код в буфер обмена
    Код (Text):
    $pattern = '#(?:</?br style="clear: left[^>]*>)((?!<\/div>\r?\n<div class=line>).)*#is';
    Ищется все, что находится между <br style="clear:left"> и <\div>перевод строки <\div class=line>. Все работает нормально, НО, если длина найденной строки превышает 8036 символов (зависит от того, каких символов большеЖкириллицы или латиницы, так что думаю не совсем удачная единица измерения - символы - но отклонения от 8036 +/- небольшие) выдается совершенно пустая страница (даже не выдает все что идет перед и после preg_match). На локальном сервере все работает норм. В чем может быть проблема?
     
  2. Vadik(R)

    Vadik(R) Well-Known Member

    Регистрация:
    12 дек 2007
    Сообщения:
    483
    Симпатии:
    0
    Наверное ограничение памяти для скриптов на сервере. Хоть 8036 символов - это 8 Кб, но регулярные выражения жрут много памяти, так что такое вполне может быть. Или слишком нагружаешь процессор на хостинге, из-за чего прерывается выполнения скрипта.
     
  3. nws

    nws Гость

    The maximum length of a compiled pattern is 65539 (sic) bytes if PCRE
    is compiled with the default internal linkage size of 2

    ini_set('memory_limit', '256M');
    ini_set('pcre.backtrack_limit', '5000000');
     
Загрузка...
Похожие Темы - Preg_match вылетает
  1. dadrum
    Ответов:
    3
    Просмотров:
    2.316
Статус темы:
Закрыта.

Поделиться этой страницей