PHP domdocument if заявление для когда тег img не имеет атрибута alt или если атрибут alt пуст? - PullRequest
1 голос
/ 16 октября 2011

Я использую этот код для получения атрибута alt из тегов img, используя domdocument. Если на странице есть изображения без атрибута alt или если атрибут alt пуст, она не распознает это. Мне нужна помощь в написании условий для проверки пустых атрибутов alt, а также их отсутствия. Спасибо

$name =  trim($words->nodeName);
    if($name == 'img' ) 
        {
            $alt= $words->getAttribute('alt');
            if(!empty($alt)) 
        {
    $this->matchedAnchors[$this->count]['alt']     =  trim($words->getAttribute('alt'));

1 Ответ

2 голосов
/ 16 октября 2011

Вы можете использовать XPath для этого:

//img[normalize-space(@alt) != '']

Пример:

$xml = <<< XML
<ul>
    <li><img alt="foo"/></li>
    <li><img alt="   "/></li>
    <li><img alt=""/></li>
    <li><img /></li>
</ul>
XML;

$dom = new DOMDocument;
$dom->loadXML($xml);
$xp = new DOMXPath($dom);

foreach ($xp->query('//img[normalize-space(@alt) != ""]') as $img) {
    echo $dom->saveXML($img);
}

будет печатать только

<img alt="foo"/>

Демонстрация на кодовой панели

...