Как игнорировать / продолжить, если TD не содержит изображения? - PullRequest
2 голосов
/ 14 августа 2011

Мне нужно continue;, если TD не содержит изображения.

Я пробовал это:

if(!$image){continue;}

, но это не сработало.

<?php
    /////////////////////////////////////////////////////////////////////
        $html='
            <table>
                <tr>
                    <td colspan="2">
                        <span>green</span>
                        <img src="green.gif" />
                    </td>
                </tr>
                <tr>
                    <td>
                        <span>yellow</span>
                        no image !!
                    </td>
                    <td>
                        <span>red</span>
                        <img src="red.gif" />
                    </td>
                </tr>
            </table>
            <table>
                <tr>
                    <td>
                        <span>black</span>
                        <img src="black.gif" />
                    </td>
                </tr>
            </table>
        ';
    /////////////////////////////////////////////////////////////////////
        $dom = new DOMDocument();
        $dom->loadHTML($html);
        $xpath = new DomXPath($dom);
    /////////////////////////////////////////////////////////////////////
        $query = $xpath->query('.//table/tr/td');
        for( $x=0,$results=''; $x<$query->length; $x++ )
        {
            $x1=$x+1;

            $color = $query->item($x)->getElementsByTagName('span')->item(0)->nodeValue;
            $image = $query->item($x)->getELementsByTagName('img');
            if(!$image){continue;} 
            $image = $image->item(0)->getAttribute('src');

            $results .= "color $x1 is : $color - and- image $x1 is : $image<br/>";
        }
        echo $results;
    /////////////////////////////////////////////////////////////////////
?>

Как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 14 августа 2011

Попробуйте:

if(!count($image)){continue;}

Но было бы гораздо эффективнее изменить ваш запрос, как предложил Гордон.

2 голосов
/ 14 августа 2011

Попробуйте с

.//table/tr/td[img]

или (поскольку loadHTML добавляет скелет HTML):

/html/body/table/tr/td[img]

См. http://codepad.viper -7.com / TsMVxe

...