Analysieren Sie Links in HTML mit PHP

王林
Freigeben: 2023-06-14 13:10:01
Original
1544 Leute haben es durchsucht

Mit der rasanten Entwicklung des Internets nehmen Anzahl und Umfang der Websites weiter zu. Um die Zugänglichkeit und Benutzererfahrung der Website zu verbessern, ist es häufig erforderlich, eine große Anzahl von Links zur Webseite hinzuzufügen. Bei einigen Websites, die eine Stapelverarbeitung erfordern, ist die manuelle Überprüfung und Änderung von Links offensichtlich eine mühsame und fehleranfällige Aufgabe. Daher ist die Verwendung von PHP zum Parsen von Links in HTML zu einer effizienten und schnellen Methode geworden.

1. Holen Sie sich die HTML-Datei

Zuerst müssen wir die HTML-Datei abrufen, die über PHP verarbeitet werden soll. PHP bietet verschiedene Möglichkeiten, HTML-Dateien abzurufen, z. B. die Verwendung der Funktion file_get_contents, die Kombination von fopen und fread zum Lesen usw. Hier verwenden wir die Funktion file_get_contents.

$filename = 'example.html';
$html = file_get_contents($filename);

2 Analysieren Sie die Links in der HTML-Datei

Nachdem wir die HTML-Datei erhalten haben, müssen wir die darin enthaltenen Links möglichst genau extrahieren wie möglich. Auf dieser Grundlage können wir reguläre Ausdrücke oder den in PHP integrierten DOM-Parser verwenden.

  1. Regulärer Ausdruck zum Extrahieren von Links

Um Links mithilfe regulärer Ausdrücke zu extrahieren, müssen wir die Grundstruktur von HTML-Seitenlinks verstehen. Im Allgemeinen werden Links in HTML-Seiten mit Tags in einen bestimmten Textinhalt eingeschlossen. Die Grundstruktur ist wie folgt:

Linktextinhalt

Daher können wir alle Links über reguläre Ausdrücke abgleichen. Der spezifische Code lautet wie folgt:

$regexp ='1*href=['"]?(2+)';
preg_match_all($regexp, $html, $match );
$link = array_unique($match[1]);

Der obige Code verwendet den regulären Ausdruck < as1*href=['"]?(2+) zum Abgleichen Fügen Sie das a-Tag hinzu und extrahieren Sie es https://www.php.cn/link/39cec6d4d21b5dade7544dab6881423e im href-Attribut. Darunter bedeutet 2+ die Übereinstimmung einer Reihe von Zeichen ohne einfache Anführungszeichen, doppelte Anführungszeichen und Leerzeichen. Verwenden Sie abschließend die Funktion array_unique, um alle https://www.php.cn/link/39cec6d4d21b5dade7544dab6881423e zu deduplizieren.

  1. Verwenden Sie den DOM-Parser, um Links zu extrahieren.

Der integrierte DOM-Parser von PHP bietet eine bequemere und genauere Möglichkeit, Links in HTML-Dateien zu analysieren. Es kann HTML-Seiten in eine Document Object Model (DOM)-Baumstruktur konvertieren, sodass es den Dokumentbaum durchqueren kann, um Informationen abzufragen und zu extrahieren.

Der spezifische Code lautet wie folgt:

$doc = new DOMDocument();
$doc->loadHTML($html);
$links = $doc->getElementsByTagName('a');
foreach ( $links als $link) {

$href = $link->getAttribute('href');
Nach dem Login kopieren

}

Im obigen Code verwenden wir zuerst DOMDocument, um die $html-Zeichenfolge in das Dokumentobjektmodell zu konvertieren, und erhalten dann alle a-Tags über die Methode getElementsByTagName('a') und Durchlaufen Sie jeweils ein Tag und extrahieren Sie den Attributwert in seinem href-Attribut.

3. Verarbeiten Sie die Links

Nachdem wir alle Links erhalten haben, müssen wir diese Links verarbeiten. Die spezifische Verarbeitungsmethode hängt von den Anforderungen ab. Im Folgenden sind einige gängige Verarbeitungsmethoden aufgeführt:

  1. Ersetzung

Manchmal müssen wir bestimmte Teile des Links stapelweise ändern, z. B. das Entfernen des http://-Präfixes aus dem Link. Mit der Funktion str_replace können Sie Zeichenfolgen ersetzen.

foreach ($links as $link) {

$href = $link->getAttribute('href');
$new_href = str_replace('http://', '', $href);
$link->setAttribute('href', $new_href);
Nach dem Login kopieren

}

  1. Add

Manchmal müssen wir allen Links bestimmte Zeichenfolgen oder Parameter hinzufügen, z. B. das Hinzufügen von utm_campaign=xxx-Parametern nach allen Links. Kann mithilfe der Zeichenfolgenverkettung hinzugefügt werden.

foreach ($links as $link) {

$href = $link->getAttribute('href');
$new_href = $href . '?utm_campaign=xxx';
$link->setAttribute('href', $new_href);
Nach dem Login kopieren

}

  1. Filtern

Manchmal müssen wir bestimmte Links herausfiltern, beispielsweise bestimmte Werbelinks. Sie können if-Anweisungen verwenden, um Links zu beurteilen und zu filtern.

foreach ($links as $link) {

$href = $link->getAttribute('href');
if (strstr($href, 'ad.')) {
    $link->parentNode->removeChild($link);
}
Nach dem Login kopieren

}

4. Speichern Sie die HTML-Datei

Nachdem wir alle Links verarbeitet haben, müssen wir die Ergebnisse in der HTML-Datei speichern. Verwenden Sie genau wie beim Lesen einer HTML-Datei die Funktion file_put_contents, um in die Datei zu schreiben.

$filename_new = 'example_new.html';
$html_new = $doc->saveHTML();
file_put_contents($filename_new, $html_new);

Zusammenfassend lässt sich sagen, dass die Verwendung von PHP zum Parsen von Links in HTML effizient ist Methode: Bequeme Stapelverarbeitungsmethode. Rufen Sie Links über reguläre Ausdrücke oder DOM-Parser ab, verarbeiten Sie sie und speichern Sie sie schließlich in HTML-Dateien, sodass Sie eine große Anzahl von Links schnell aktualisieren und ändern können.


  1. >
  2. '" >

Das obige ist der detaillierte Inhalt vonAnalysieren Sie Links in HTML mit PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!