summaryrefslogtreecommitdiffstats
path: root/vendor/fguillot/picofeed/lib/PicoFeed/Filter/Tag.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/fguillot/picofeed/lib/PicoFeed/Filter/Tag.php')
-rw-r--r--vendor/fguillot/picofeed/lib/PicoFeed/Filter/Tag.php38
1 files changed, 37 insertions, 1 deletions
diff --git a/vendor/fguillot/picofeed/lib/PicoFeed/Filter/Tag.php b/vendor/fguillot/picofeed/lib/PicoFeed/Filter/Tag.php
index 40f7c6c98..647b7352f 100644
--- a/vendor/fguillot/picofeed/lib/PicoFeed/Filter/Tag.php
+++ b/vendor/fguillot/picofeed/lib/PicoFeed/Filter/Tag.php
@@ -2,6 +2,9 @@
namespace PicoFeed\Filter;
+use DOMXpath;
+use PicoFeed\Parser\XmlParser;
+
/**
* Tag Filter class
*
@@ -11,6 +14,17 @@ namespace PicoFeed\Filter;
class Tag
{
/**
+ * Tags blacklist (Xpath expressions)
+ *
+ * @access private
+ * @var array
+ */
+ private $tag_blacklist = array(
+ '//script',
+ '//style',
+ );
+
+ /**
* Tags whitelist
*
* @access private
@@ -104,7 +118,7 @@ class Tag
*/
public function isSelfClosingTag($tag)
{
- return in_array($tag, array('br', 'img'));
+ return $tag === 'br' || $tag === 'img';
}
/**
@@ -135,6 +149,28 @@ class Tag
}
/**
+ * Remove script tags
+ *
+ * @access public
+ * @param string $data Input data
+ * @return string
+ */
+ public function removeBlacklistedTags($data)
+ {
+ $dom = XmlParser::getDomDocument($data);
+ $xpath = new DOMXpath($dom);
+
+ $nodes = $xpath->query(implode(' | ', $this->tag_blacklist));
+
+ foreach ($nodes as $node) {
+ $node->parentNode->removeChild($node);
+ }
+
+ return $dom->saveXML();
+ }
+
+
+ /**
* Remove empty tags
*
* @access public