private function processExcludeElements($html) { if ($html) { if ($patterns = ExcludeElements::findAll(array("source_id" => $this->source->id))) { $htmlDoc = mb_convert_encoding($html, 'HTML-ENTITIES', "UTF-8"); $doc = new \DOMDocument("1.0", "utf-8"); $doc->preserveWhiteSpace = false; libxml_use_internal_errors(true); $doc->loadHTML($htmlDoc); $xpath = new \DOMXpath($doc); foreach ($patterns as $pattern) { if ($xpath->query($pattern->pattern)) { if ($element = $xpath->query($pattern->pattern)->item(0)) { $replace = $doc->saveHTML($element); $html = str_replace($replace, '', $html); } } } } } return $html; }
/** * @return \yii\db\ActiveQuery */ public function getExcludeElements() { return $this->hasMany(ExcludeElements::className(), ['source_id' => 'id']); }