Heim >Backend-Entwicklung >PHP-Tutorial >Wie erkennt und konvertiert man URLs in HTML-Links in PHP?

Wie erkennt und konvertiert man URLs in HTML-Links in PHP?

Barbara Streisand
Barbara StreisandOriginal
2024-12-19 05:15:22875Durchsuche

How to Detect and Convert URLs to HTML Links in PHP?

URLs im Text erkennen und in HTML-Links konvertieren

In verschiedenen Online-Anwendungen ist die Konvertierung von im Text erwähnten URLs in anklickbare Links eine häufige Anforderung . Lassen Sie uns untersuchen, wie Sie dies in PHP erreichen können.

Anforderungen

  1. URLs mit oder ohne das Präfix „http://“ erkennen.
  2. Domains, IP-Adressen und gültige Top-Level-Domains (TLDs) zulassen.
  3. URLs innerhalb normaler Sätze erkennen Kontexte.
  4. Unterstützt „https://“-URLs und möglicherweise auch andere.
  5. Verhindert Cross-Site-Scripting (XSS)-Schwachstellen.
  6. Unterstützt E-Mail-Adressen (optional).

Lösung

Basiert auf regulären Ausdrücken Ansatz

Lassen Sie uns einen regulären Ausdruck erstellen, der gültigen URLs und ihren Bestandteilen entspricht:

$rexProtocol = '(https?://)?';
$rexDomain   = '((?:[-a-zA-Z0-9]{1,63}\.)+[-a-zA-Z0-9]{2,63}|(?:[0-9]{1,3}\.){3}[0-9]{1,3})';
$rexPort     = '(:[0-9]{1,5})?';
$rexPath     = '(/[!$-/0-9:;=@_\':;!a-zA-Z\x7f-\xff]*?)?';
$rexQuery    = '(\?[!$-/0-9:;=@_\':;!a-zA-Z\x7f-\xff]+?)?';
$rexFragment = '(#[!$-/0-9:;=@_\':;!a-zA-Z\x7f-\xff]+?)?';

$rex = "&\b$rexProtocol$rexDomain$rexPort$rexPath$rexQuery$rexFragment(?=[?.!,;:\"]?(\s|$))&";

Implementierung

Wir können preg_match_all verwenden (), um alle URL-Übereinstimmungen im zu finden Text:

preg_match_all($rex, htmlspecialchars($text), $matches, PREG_OFFSET_CAPTURE);

In HTML-Links konvertieren

Wir durchlaufen die Übereinstimmungen und erstellen die entsprechenden HTML-Links:

foreach ($matches[0] as $match) {
    $url = $match[0];
    $domain = $matches[2][0];
    $path = $matches[4][0];

    $completeUrl = $matches[1][0] ? $url : "http://$url";

    $htmlLink = "<a href='$completeUrl'>$domain$path</a>";

    $text = str_replace($url, $htmlLink, $text);
}

Dieser Ansatz verarbeitet die meisten URL-Formate effizient und gewährleistet gleichzeitig die Sicherheit gegen XSS-Angriffe.

Das obige ist der detaillierte Inhalt vonWie erkennt und konvertiert man URLs in HTML-Links in PHP?. 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