У меня есть регулярное выражение, которое ищет адреса электронной почты (это было взято из другого SO сообщения, которое я не могу найти, и было проверено на всех видах конфигураций электронной почты ... изменить это не совсем мой вопрос ... но поймите, если это является основной причиной):
/[a-z0-9_\-\+]+@[a-z0-9\-]+\.([a-z]{2,3})(?:\.[a-z]{2})?/i
Я использую preg_match_all () в PHP.
Это прекрасно работает для 99,99% файлов, которые я просматриваю, и занимает около 5 мс, но иногда занимает пару минут. Эти файлы больше, чем средняя веб-страница, размером около 300 Кб, но гораздо большие файлы обычно обрабатываются нормально Единственное, что я могу найти в содержимом файла, которое выделяется, это строки из тысяч последовательных «случайных» буквенно-цифровых символов, таких как:
wEPDwUKMTk0ODI3Nzk5MQ9kFgICAw9kFgYCAQ8WAh4H...
Вот две страницы, вызывающие проблему. Просмотр источника, чтобы увидеть длинные строки.
Есть мысли о том, что вызывает это?
- ЗАКЛЮЧИТЕЛЬНОЕ РЕШЕНИЕ -
Я проверил различные регулярные выражения, предложенные в ответах. Ответ @ FailedDev помог и сократил время обработки с нескольких минут до нескольких секунд. Ответ @ hakre решил проблему и сократил время обработки до нескольких сотен миллисекунд. Ниже приведено последнее регулярное выражение, которое я использовал. Это второе предложение @ hakre.
/[a-z0-9_\-\+]{1,256}+@[a-z0-9\-]{1,256}+\.([a-z]{2,3})(?:\.[a-z]{2})?/i