Preg_match "вылетает"

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

Guest

#1
Составил регулярное выражение
Код (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). На локальном сервере все работает норм. В чем может быть проблема?
 

Vadik(R)

Well-known member
12.12.2007
469
0
#2
Наверное ограничение памяти для скриптов на сервере. Хоть 8036 символов - это 8 Кб, но регулярные выражения жрут много памяти, так что такое вполне может быть. Или слишком нагружаешь процессор на хостинге, из-за чего прерывается выполнения скрипта.
 
N
#3
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');
 
Статус
Закрыто для дальнейших ответов.