Ersetzen Sie alle -Tags, die das angegebene href-Attribut enthalten, durch Regex oder DOMPhp

PHP-Programmierer chatten hier
Anonymous
 Ersetzen Sie alle -Tags, die das angegebene href-Attribut enthalten, durch Regex oder DOM

Post by Anonymous »

Ich habe damit zu kämpfen. Die Idee besteht darin, alle -Tags zu ersetzen, die ein bestimmtes href-Attribut innerhalb einer bestimmten Zeichenfolge enthalten (die aus einem Puffer stammt und normales HTML ist, aber manchmal fehlerhaft formatiert ist).

Ich habe versucht, den PHP DOM-Ansatz und auch die SimpleHTMLDOM-Parserbibliothek zu verwenden, bisher hat bei mir nichts funktioniert (das Problem ist, dass der DOM-Ansatz nur Links zurückgibt innerhalb des -Elements, aber nicht im -Abschnitt der Seite), also habe ich mich für die Verwendung von Regex entschieden.
Hier ist der nicht funktionierende PHP DOM-Ansatzcode:

Code: Select all

function remove_css_links($string = "", $css_files = array()) {
$css_files = array("http://www.example.com/css/css.css?ver=2.70","style.css?ver=3.8.1");
$xml = new DOMDocument();
$xml->loadHTML($string);
$link_list = $xml->getElementsByTagName('link');
$link_list_length = $link_list->length;
//The cycle
for ($i = 0; $i < $link_list_length; $i++) {
$attributes = $link_list->item($i)->attributes;
$href = $attributes->getNamedItem('href');
if (in_array($href->value, $css_files))  {
//Remove the HTML node
}
}
$string = $xml->saveHTML();
return $string;
}
Hier ist der Regex-Code, ich weiß jedoch, dass Sie alle nicht empfehlen, ihn zum Parsen von HTML zu verwenden, aber lasst uns das hier und jetzt nicht diskutieren:

Code: Select all

$html_text = '







...some content...


';
$url = preg_quote("http://www.example.com/css/css.css?ver=2.70");
$pattern = "~]+) href=".$url."/?>~";
$link = preg_replace($pattern, "", $html_text);
Das Problem mit der Regex besteht darin, dass das href-Attribut an jeder Stelle innerhalb des -Tags stehen kann und dieses, das ich verwende, jede Art von -Tags erkennen kann, wie Sie sehen, möchte ich das Verknüpfungssymbol oder alternative-Typen davon sowie alles andere als die angegebene URL nicht entfernen href-Attribut. Sie können feststellen, dass die -Tags verschiedene Arten von Anführungszeichen enthalten, einfache und/oder doppelte.

Ich bin jedoch offen für Vorschläge und wenn es möglich ist, den DOM-Ansatz zum Laufen zu bringen, anstatt Regex zu verwenden – das ist in Ordnung.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post