Нужна Помощь В Удалении Пробелов Из Div


Я новичок в анализе DOM, но я понял большую часть этого. У меня просто возникли проблемы с удалением nbsp; из div.

Вот мой PHP:

    function parseDOM($url) {
        $dom = new DOMDocument;
        @$dom->loadHTMLFile($url);
        $xpath = new DOMXPath($dom);
        $movies = array();
        foreach ($xpath->query('//div[@class="mshow"]') as $movie) {
            $item = array();
            $links = $xpath->query('.//a', $movie);
            $item['trailer'] = $links->item(0)->getAttribute('href');
            $item['reviews'] = $links->item(1)->getAttribute('href');
            $item['link'] = $links->item(2)->getAttribute('href');
            $item['title'] = $links->item(2)->nodeValue;
            $item['rating'] = trim($xpath->query('.//strong/following-sibling::text()',
                $movie)->item(0)->nodeValue);
            $i = 0;
            foreach ($xpath->query('.//div[@class="rsd"]', $movie) as $date) {
                $dates = $xpath->query('.//div[@class="rsd"]', $movie);
                $times = $xpath->query('.//div[@class="rst"]', $movie);
                $item['datetime'][] = $dates->item($i)->nodeValue . $times->item($i)->nodeValue;
                $i += 1;
            }
            $movies[] = $item;
        }
        return $movies;
    }

    $url = 'http://www.tribute.ca/showtimes/theatres/may-cinema-6/mayc5/?datefilter=-1';
    $movies = parseDOM($url);
    foreach ($movies as $key => $value) {
        echo $value['title'] . '<br>';
        echo $value['link'] . '<br>';
        echo $value['rating'] . '<br>';
        foreach ($value['datetime'] as $datetime) {
            echo $datetime . '<br>';
        }                     
    }                 

Вот как выглядит HTML-код:

    <div class="rst" >6:45pm &nbsp;&nbsp;9:30pm &nbsp;&nbsp;</div>

Есть ли что-то, что я могу добавить в запрос xpath для достижения этой цели? Я попытался добавить strip_tags в $times->item($i)->nodeValue, но он все еще печатается, как: Thu, May 01: 6:45pm   9:30pm  Â

Редактировать: str_replace("\xc2\xa0", '', $times->item($i)->nodeValue); кажется, это помогает.

Author: DERNERSERFT, 2014-04-25

1 answers

Попробуйте это:

$times->item($i)->nodeValue = str_replace("&nbsp;","",$times->item($i)->nodeValue);

Он должен удалять все &nbsp;


РЕДАКТИРОВАТЬ

Ваша строка:

$item['datetime'][] = $dates->item($i)->nodeValue . $times->item($i)->nodeValue;

Станьте:

$item['datetime'][] = $dates->item($i)->nodeValue 
                        . str_replace("&nbsp;","",$times->item($i)->nodeValue);

РЕДАКТИРОВАТЬ 2

Если str_replace не работает, попробуйте использовать str_ireplace, как предложено в комментарии.

Если это все еще не работает, вы также можете попробовать с помощью:

preg_replace("#&nbsp;#","",$times->item($i)->nodeValue);

РЕДАКТИРОВАТЬ 3

Возможно, у вас проблема с кодировкой. видишь uft8_encode

Или решение для свиньи:

str_replace("Â","",$times->item($i)->nodeValue);

Аполо

 1
Author: Apolo, 2014-04-25 15:59:44