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
Freigeben: 2024-12-19 05:15:22
Original
805 Leute haben es durchsucht

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|$))&";
Nach dem Login kopieren

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);
Nach dem Login kopieren

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);
}
Nach dem Login kopieren

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!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage