blackice777
14.04.2016, 22:34
На некоторых сайтах стоит защита от парсинга email, на сайте они отображаются нормально, но в коде выглядят так:
[email*protected]
И при парсинге мы получаем вместо email: [email*protected]
Решил написать функцию на php для преобразования закодированных таким образом email к нормальному виду, может кому пригодится:
functionemailDecode($email_encoded){
for($e='',$r=hexdec('0x'.substr($e mail_encoded,0,2)),$n=2;strlen($email_encoded) -$n;$n+=2){
$e.='%'.substr('0'.dechex(hexdec('0x'.substr($emai l_encoded,$n,2)) ^$r), -2);
}
returnurldecode($e);
}
Пример работы при использовании simple_html_dom:
find('.__cf_email__',0)->getAttribute('data-cfemail');
$email=emailDecode($email_encoded);
die($email);
functionemailDecode($email_encoded){
for($e='',$r=hexdec('0x'.substr($e mail_encoded,0,2)),$n=2;strlen($email_encoded) -$n;$n+=2){
$e.='%'.substr('0'.dechex(hexdec('0x'.substr($emai l_encoded,$n,2)) ^$r), -2);
}
returnurldecode($e);
}
[email*protected]
И при парсинге мы получаем вместо email: [email*protected]
Решил написать функцию на php для преобразования закодированных таким образом email к нормальному виду, может кому пригодится:
functionemailDecode($email_encoded){
for($e='',$r=hexdec('0x'.substr($e mail_encoded,0,2)),$n=2;strlen($email_encoded) -$n;$n+=2){
$e.='%'.substr('0'.dechex(hexdec('0x'.substr($emai l_encoded,$n,2)) ^$r), -2);
}
returnurldecode($e);
}
Пример работы при использовании simple_html_dom:
find('.__cf_email__',0)->getAttribute('data-cfemail');
$email=emailDecode($email_encoded);
die($email);
functionemailDecode($email_encoded){
for($e='',$r=hexdec('0x'.substr($e mail_encoded,0,2)),$n=2;strlen($email_encoded) -$n;$n+=2){
$e.='%'.substr('0'.dechex(hexdec('0x'.substr($emai l_encoded,$n,2)) ^$r), -2);
}
returnurldecode($e);
}