parser: properly support tag subtrees instead of text content for article content
This commit is contained in:
parent
d2bb392bae
commit
7d1e15c396
|
@ -75,7 +75,7 @@ class FeedItem_Atom extends FeedItem_Common {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $content->nodeValue;
|
return $this->subtree_or_text($content);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,7 +95,7 @@ class FeedItem_Atom extends FeedItem_Common {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $content->nodeValue;
|
return $this->subtree_or_text($content);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,6 +70,17 @@ abstract class FeedItem_Common extends FeedItem {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function count_children($node) {
|
||||||
|
return $node->getElementsByTagName("*")->length;
|
||||||
|
}
|
||||||
|
|
||||||
|
function subtree_or_text($node) {
|
||||||
|
if ($this->count_children($node) == 0) {
|
||||||
|
return $node->nodeValue;
|
||||||
|
} else {
|
||||||
|
return $node->c14n();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -71,17 +71,19 @@ class FeedItem_RSS extends FeedItem_Common {
|
||||||
$contentB = $this->elem->getElementsByTagName("description")->item(0);
|
$contentB = $this->elem->getElementsByTagName("description")->item(0);
|
||||||
|
|
||||||
if ($contentA && !$contentB) {
|
if ($contentA && !$contentB) {
|
||||||
return $contentA->nodeValue;
|
return $this->subtree_or_text($contentA);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if ($contentB && !$contentA) {
|
if ($contentB && !$contentA) {
|
||||||
return $contentB->nodeValue;
|
return $this->subtree_or_text($contentB);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($contentA && $contentB) {
|
if ($contentA && $contentB) {
|
||||||
return mb_strlen($contentA->nodeValue) > mb_strlen($contentB->nodeValue) ?
|
$resultA = $this->subtree_or_text($contentA);
|
||||||
$contentA->nodeValue : $contentB->nodeValue;
|
$resultB = $this->subtree_or_text($contentB);
|
||||||
|
|
||||||
|
return mb_strlen($resultA) > mb_strlen($resultB) ? $resultA : $resultB;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue