Регулярное выражение, содержащее почтовые адреса, но не значение =

Как я могу поймать все почтовые адреса из HTML, но игнорировать адреса, которые являются значениями формы. Например:

    <p>Mail: [email protected]</p>
...
<input value="[email protected]">
...
<a href="mailto:[email protected]">Kontakt: <span>[email protected]</span></a>

Мне нужны все адреса, но не адрес из поля ввода (это значение формы).

Для сопоставления адресов у меня есть:

(mailto:|)[a-z0-9_\.\-\+]+@[a-z0-9\-\.]+\.[a-z]{2,}+)

-1

Решение

Использование регулярных выражений для разбора HTML не очень хорошая идея. Тем не менее, более простым подходом было бы убрать все электронные письма, которые являются входными значениями, а затем сопоставить все напоминания.

Вот пример использования вашего регулярного выражения для сопоставления электронных писем.

$html = preg_replace("/value=[\"'][a-z0-9_\.\-\+]+@[a-z0-9\-\.]+\.[a-z]{2,}[\"']/", "", $html);

preg_match_all("/[a-z0-9_\.\-\+]+@[a-z0-9\-\.]+\.[a-z]{2,}/", $html, $matches);
var_dump($matches); //will output all emails but the one inside value.
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]