PHP DOMNode::hasAttributes проверяет сбой

Я использую PHP DOMNode hasAttributes, чтобы получить все атрибуты элементов. Пока все работает отлично. Мой код ниже. Тем не менее, эта линия else if($imageTags->hasAttributes() == false) is where I can't get it to work, он отображает ошибку на моей странице, вместо этого перенаправляя пользователя на индекс php, когда код не работает. Что я действительно хочу, это если ($imageTags->hasAttributes() == true) не равно TRUE. Перенаправьте пользователя на index.php и не отображайте ошибки вместо этого.

function get_iframe_attr($string){
        $doc = new DOMDocument();
        $doc->loadHTML("$string");

            $imageTags = $doc->getElementsByTagName('iframe')->item(0);
            if ($imageTags->hasAttributes() == true) {
              foreach ($imageTags->attributes as $attr) {
                $name = $attr->nodeName;
                $value = $attr->nodeValue;
                $attr_val[] = "$name=\"$value\" ";

              }
              echo  $implode_str = implode(" ", $attr_val);
            }else if($imageTags->hasAttributes() == false){
              header("Location: index.php");
            }

        } 


get_iframe_attr('<iframe src="" scrolling="no" width="600" height="438" marginheight="0" marginwidth="0" frameborder="0"></iframe>');

Примечание: если вы удалите '<iframe' теги на строку. Вы получите ошибку

2 ответа

Решение
...
} else if($imageTags->hasAttributes() == false){
   header("Location: index.php");
   die; // needed here to prevent code below, if any from executing
}
...

также в примечании о редактировании об удалении iframe и получении ошибки, необходимо проверить, $doc->getElementsByTagName('iframe') фактически захватил что-нибудь, пример:

$imageTags = $doc->getElementsByTagName('iframe')
if ($imageTags->length > 0) {
   $imageTags = $imageTags->item(0);
   ...

Вместо того, чтобы использовать $imageTags->hasAttributes() Я решил это с помощью $imageTags instanceof DOMNode

Другие вопросы по тегам