[英]Suppress getAttribute() error when using cfDecodeEmail() to decode email using PHP
目的:解码cloudflare email
问题:未捕获的Uncaught Error: Call to a member function getAttribute() on null
听起来就像使用 is_null() 一样简单,但它不起作用。 尝试了 is_object() 但我仍然无法摆脱错误。
客观的:
$field['value'] = cfDecodeEmail($a->getAttribute("data-cfemail"));
代码返回我已分配给 ACF 字段的 email 地址。
所以现在任何没有该值的字段都会在 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'));
您必须检查null
或is_object
上的 object $a
,它将像这样完成。
$field['value'] = ( ! is_null( $a ) && is_object( $a ) ) ? cfDecodeEmail( $a->getAttribute( 'data-cfemail' ) ) : '';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.