Я вошел в систему и получил страницу возврата, используя CURL
загрузил его DOMDocument
и затем запросил его DOMXPATH
(чтобы найти ‘table.essgrid tr’). (Затем я также запрашиваю результат, чтобы найти дочерние тд и) с результатами, results->item(2)->nodeValue
это либо дата, либо эхо в браузере как
или же , Мне нужно проверить, будет ли это пробел или текст.
Надеюсь, это имеет смысл с кодом ниже.
$dom = new DOMDocument();
$dom->loadHTML($result);
$xpath = new DOMXPATH($dom);
$result = $xpath->query('//table[@class="essgrid"]//tr');
if($result->length > 0) {
foreach($result as $item) {
$tds = $item->getElementsByTagName('td');
if($tds->length) {
if($tds->item(2)->nodeValue != " " && $tds->item(2)->nodeValue != " ") {
echo = '<div>not blank:</div>';
echo = '<div>'.$tds->item(2)->nodeValue.'</div>';
}
}
}
}
Поэтому я хочу, чтобы это отображало только «table.essgrid> tr> td», значение которого не является неразрывным пробелом, но просто выводит это на страницу:
<div>not blank:</div>
<div> </div>
<div>not blank:</div>
<div> </div>
<div>not blank:</div>
<div>13:00</div>
<div>not blank:</div>
<div> </div>
<div>not blank:</div>
<div>14:30</div>
<div>not blank:</div>
<div>13:00</div>
<div>not blank:</div>
<div> </div>
Но это повторяет все результаты, а не только результаты. Поэтому я думаю, что моя проблема заключается в проверке значения ==
, но ничего, что я пробовал на его месте, кажется, не работает.
Когда вы хотите сравнить nodeValue
за то, что
Вам нужно знать две вещи:
является HTML-объектом, представляющим определенный символ, здесь неразрывный пробел который может быть официально указан как Символ Unicode ‘NO-BREAK SPACE’ (U + 00A0).С этой общей информацией под рукой, легко решить вашу проблему. Как
обозначает Пространство без перерыва (U + 00A0) и в качестве DOMElement::nodeValue
возвращает содержимое в виде строки в кодировке UTF-8 и в виде Без перерыва пространство в UTF-8 есть "\xC2\xA0"
в PHP вы можете просто сравнить это:
/** @var $td DOMElement */
$td = $tds->item(2);
if ($td->nodeValue !== "\xC2\xA0") {
// TD content is not " "}
Надеюсь, что это дает вам необходимые указатели.
Других решений пока нет …