Улучшение [1.2.773] HTML::EmailExtractor изменение регулярки для парсинга

  • Автор темы Автор темы Dima321
  • Дата начала Дата начала

Dima321

A-Parser Pro License
A-Parser Pro
Добрый день, предлагаю ряд изменений.

1. Ввести ограничение на длинну локальную части (до что до @) 1-64 символа.
2. Ввести ограничение на длину доменной части (то, что после @) до 255 символов.
Эти требования описаны в RFC

3. Хоть RFC и допускает, но по факту крайне редко встречаются email, где присутстует символ "%". Предлагаю его убрать из регулярки. Собирается из-за него как правило, только хлам.
Пример:
22%7d%2c%7b%22id%22%3a%22667090253470645_667090666803937%22%2c%22created_time%22%3a%222017-03-06t20%3a51%3a49.000z%22%2c%22status_type%22%3a%22cover_photo%22%2c%22message%22%3a%22%22%7d%5d%7d%2c%22syncedat%22%3a%222020-02-01t21%3a33%3a44.506z%22%7d%2c%22email%22%3a%[email protected]|http://1018design.no

4. Добавить в паттерн имейл разделить @ = {at} {a} [a] [at] (a) (at) + в верхнем регистре {A} {AT}..., и разрешить до 3х пробельных символа до\перед\внутри ними. И соотвественно сразу конвертировать его в @ в результатах. Около 1-2% добавляется (тестировал HTML::TextExtractor).
Примеры:
info{at}vanessaminique.be|https://vanessaminique.be/contact/
kris.medart(at)telenet.be|https://veg-deburg.be/contact/
contact (at) ventsdusud.be|https://ventsdusud.be/contact
info {at} virginielobet.be|https://virginielobet.be/contact/
lalunechezviolette (a) gmail.com|https://www.lalunechezviolette.be/contact/
info[at]landschapsbeleving.be|https://www.landschapsbeleving.be/contact
[email protected]|https://www.landmetingenartois.be/contact/
info( at)landschapstuinen.be|https://www.landschapstuinen.be/contact
pat ( at) ttl-technics.be|https://www.ttl-technics.be/contact/


5. Добавить ограничение на окончание имейла. Очень редко, но попадаются "email" типо
[email protected]
[email protected]
[email protected]

В целом регулярка выглядит примерно так:
(\b[A-Za-z0-9._+-]{1,64}?(@|\s{0,3}([({\[]\s{0,3}(at|a|A|AT)\s{0,3}[\]})])\s{0,3})[A-Za-z0-9.-]{1,255}\.(?!(svg|webp|jpg|png|gif|jpeg|bmp|js|css|html|htm|pjpeg|ico))[A-Za-z]{2,6}\b)
 
Последнее редактирование:
Пункты 1,2,4 реализованы.
Пункт 3 - оставлен как есть, для большего соответствия стандартам. Если требуется отфильтровывать адреса с %, можно воспользоваться фильтром.
Пункт 5 - часть расширений уже проверялась в парсере, расширили список.
 
Назад
Верх