• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Preg_match "вылетает"

  • Автор темы Автор темы Guest
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
G

Guest

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

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab