Heim  >  Artikel  >  Backend-Entwicklung  >  Reguläre PHP-Ausdrücke: Wie alle Links in HTML abgeglichen werden

Reguläre PHP-Ausdrücke: Wie alle Links in HTML abgeglichen werden

王林
王林Original
2023-06-22 13:15:071146Durchsuche

Bei der Webentwicklung müssen wir uns häufig mit Links in HTML-Seiten befassen. Wie verwende ich reguläre PHP-Ausdrücke, um alle Links in einer HTML-Seite abzugleichen? Finden wir es weiter unten heraus.

Links in HTML-Seiten werden im Allgemeinen über das -Tag implementiert, und wir können Links basierend auf diesem Tag zuordnen. Zuerst müssen wir den Quellcode der HTML-Seite über die Funktion file_get_contents() von PHP abrufen, zum Beispiel:

$html = file_get_contents('http://www.example.com');

Als nächstes können wir reguläre Ausdrücke verwenden, um alle Links abzugleichen. Das Folgende ist ein einfacher regulärer Ausdruck, der Links zuordnet:

$pattern = '/<a href="https://www.php.cn/link/d28a3097fa7cf63ad01c4f328314e2f2">https://www.php.cn/link/d28a3097fa7cf63ad01c4f328314e2f2</a>/';

Im regulären Ausdruck stimmt mit einem Link-Tag überein, das mit beginnt und mit dem href-Attribut beginnt. href="https://www.php.cn/link/2b9bd744f7c0d06123d9d9557310fa80" entspricht der Linkadresse. Die Klammern zeigen an, dass es sich um eine erfassende Gruppe handelt, was bedeutet, dass wir die Variable $matches verwenden können, um später auf das Übereinstimmungsergebnis zuzugreifen. >(.?) stimmt mit dem Linktext überein und ist auch eine Erfassungsgruppe.

Als nächstes können wir die Funktion preg_match_all() verwenden, um den regulären Ausdruck auf den Quellcode der HTML-Seite anzuwenden, um alle Links abzugleichen:

preg_match_all($pattern, $html, $matches);

Die Funktion gibt ein Array $matches zurück, wobei $matches[0] alle passenden Links enthält In der Zeichenfolge des Links entspricht $matches[1] der Erfassungsgruppe 1, also der Linkadresse, und $matches[2] entspricht der Erfassungsgruppe 2, also dem Linktext.

Schließlich können wir das Array $matches[1], das Link-Adress-Array, durchlaufen, um die Adressen aller Links zu erhalten:

foreach ($matches[1] as $link) {
    echo $link . "
";
}

Der vollständige Code lautet wie folgt:

$html = file_get_contents('http://www.example.com');
$pattern = '/<a href="https://www.php.cn/link/d28a3097fa7cf63ad01c4f328314e2f2">https://www.php.cn/link/d28a3097fa7cf63ad01c4f328314e2f2</a>/';
preg_match_all($pattern, $html, $matches);

foreach ($matches[1] as $link) {
    echo $link . "
";
}

Beachten Sie, dass dieser reguläre Ausdruck dies kann nur mit dem grundlegenden Linkformat übereinstimmen, zum Beispiel:

<a href="http://www.example.com">Example</a>

Wenn der Link andere Attribute enthält oder das Etikettenformat nicht den grundlegenden Anforderungen entspricht, wird er nicht abgeglichen. In praktischen Anwendungen kann der reguläre Ausdruck nach Bedarf geändert werden, um ihn an verschiedene Linkformate anzupassen.

Zusammenfassend lässt sich sagen, dass Sie zur Verwendung regulärer PHP-Ausdrücke zum Abgleichen von Links in HTML-Seiten die Funktion file_get_contents() verwenden können, um den Seitenquellcode abzurufen, dann die Funktion preg_match_all() und entsprechende reguläre Ausdrücke verwenden, um den Abgleich abzuschließen, und schließlich Schleife durch die passenden Ergebnisse, das ist Can.

Das obige ist der detaillierte Inhalt vonReguläre PHP-Ausdrücke: Wie alle Links in HTML abgeglichen werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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