Jak mogę wyodrębnić ciąg „text” z tego znacznika za pomocą PHP DOM?
<div><span>notthis</span>text</div>
$div->nodeValue
zawiera „nie to”
35
bgcode
19 czerwiec 2011, 05:05
2 odpowiedzi
Najlepsza odpowiedź
Dopóki możesz wpływać na DOM, możesz usunąć span
.
$span = $div->getElementsByTagName('span')->item(0);
$div->removeChild($span);
$nodeValue = $div->nodeValue;
Alternatywnie, po prostu uzyskaj dostęp do węzła tekstowego $div
.
foreach($div->childNodes as $node) {
if ($node->nodeType != XML_TEXT_NODE) {
continue;
}
$nodeValue = $node;
}
Jeśli skończysz z większą liczbą węzłów tekstowych i chcesz tylko pierwszego, możesz break
po pierwszym przypisaniu $nodeValue
.
26
alex
19 czerwiec 2011, 05:07
Możesz uzyskać dostęp do węzła DOMText
bezpośrednio za pomocą XPath:
$xpath = new DOMXPath($dom_document);
$node = $xpath->query('//div/text()')->item(0);
echo $node->textContent; // text
37
netcoder
19 czerwiec 2011, 05:27
Podobne pytania
Powiązane pytania
Nowe pytania
php
PHP to szeroko stosowany, wysokopoziomowy, dynamiczny, zorientowany obiektowo i interpretowany język skryptowy przeznaczony głównie do tworzenia stron WWW po stronie serwera. Używane w przypadku pytań dotyczących języka PHP.