У меня есть этот шаблон регулярных выражений /[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}/i
, который я использую для получения адресов электронной почты из строки.Но теперь я хотел бы получить только все адреса электронной почты, которые являются значением произвольного атрибута HTML-элемента, включая сам атрибут.Посмотрите на мой пример, и все должно быть ясно:
<?php
$subject = 'abc dont@get.me 123 <input value="please@get.me">xyz';
$pattern = '/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}/i';
preg_match_all( $pattern, $subject, $matches );
var_dump( $matches );
выдаст что-то вроде:
array(1) { [0]=> array(2) {
[0]=> string(11) "dont@get.me"
[1]=> string(13) "please@get.me"
} }
, но мне нужно:
array(1) { [0]=> array(1) {
[0]=> string(13) "value="please@get.me""
} }
Пожалуйста,знать, что <input value="please@get.me">
это просто пример.Мне нужен шаблон, который может обрабатывать «все» HTML-элементы с атрибутами «все» (я поместил «все» в кавычки, чтобы прояснить, что я знаю, что могут быть некоторые крайние случаи, когда шаблон может потерпеть неудачу, потому что HTML нерегулярный) и:
<?php
$subject = "<br data-xyz=please@get.me /> dont@get.me <[tag] [attr]='[pre] andPlease@get.me [ap]'>";
preg_match_all( $pattern, $subject, $matches );
var_dump( $matches );
должен выдавать что-то вроде:
array(1) { [0]=> array(2) {
[0]=> string(13) "data-xyz=please@get.me"
[1]=> string(13) "[attr]='[pre] andPlease@get.me [ap]'"
} }
Если честно, я действительно плохо разбираюсь в шаблонах регулярных выражений, поэтому не имею понятия о том, как этого добитьсяЭто.Надеюсь, что кто-нибудь может помочь мне с этим!
РЕДАКТИРОВАТЬ: другое решение, чем регулярное выражение также было бы хорошо!