使用cfDecodeEmail()使用PHP解码电子邮件时,禁止出现getAttribute()错误



目的:解码cloudflare电子邮件

问题:Uncaught Error: Call to a member function getAttribute() on null

听起来像使用is_null((一样简单,但它不起作用。尝试了is_object((,但我仍然无法摆脱错误。

目标:

$field['value'] = cfDecodeEmail($a->getAttribute("data-cfemail"));代码返回我已分配到ACF字段中的电子邮件地址。

因此,现在任何没有值的字段都会在getAttribute((上返回上面提到的错误。

因此,如果这能让你看到我试图实现的目标:

if (is_null()) {
echo '';
} else {
$field['value'] = cfDecodeEmail($a->getAttribute("data-cfemail"));
}

整个代码:

add_filter('acf/load_field/name=application_email', function($field) {
$howtoapply = get_field('howtoapply');
if( get_post_meta($post->ID, 'application_email', true) == '' ) {
$apply_link = get_field('howtoapply');
$link = $apply_link;
libxml_use_internal_errors(true);
$dom = new DOMDocument();
@$dom->loadHTML($link);
$dom->loadHTML($link);
foreach ($dom->getElementsByTagName("a") as $a) {

}
function cfDecodeEmail($encodedString){
$k = hexdec(substr($encodedString,0,2));
for($i=2,$email='';$i<strlen($encodedString)-1;$i+=2){
$email.=chr(hexdec(substr($encodedString,$i,2))^$k);
}
return $email;
}
$field['value'] = cfDecodeEmail($a->getAttribute("data-cfemail"));

}

return $field; 

});

我不知道这个代码缺少什么。

谢谢。

$field['value']=cfDecodeEmail($a->getAttribute('data-cfemail'((;

您必须检查对象$a上的nullis_object,操作方式如下。

$field['value'] = ( ! is_null( $a ) && is_object( $a ) ) ? cfDecodeEmail( $a->getAttribute( 'data-cfemail' ) ) : '';

最新更新