Nachahmung des Auto-Link-Verhaltens von Stack Overflow in PHP
Viele Stack Overflow-Benutzer haben ihre Bewunderung für die automatische Linkfunktion der Plattform zum Ausdruck gebracht. In diesem Artikel wird untersucht, wie Sie ein solches Verhalten in PHP reproduzieren können, sodass Sie URLs in optisch ansprechende Links in Ihrem eigenen Text umwandeln können.
Der Auto-Link-Regex
Das Folgende Die PHP-Funktion verwendet ein reguläres Ausdrucksmuster von Daring Fireball, um URLs im Text zu identifizieren:
<code class="php">function auto_link_text($text) { $pattern = '(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'"",<>?«»“”‘’]))'; ... }</code>
Formatieren der Links
Sobald eine URL identifiziert wurde, analysiert die Funktion sie um den Host und den Pfad zu extrahieren. Aus diesen Informationen wird dann der Linktext erstellt, der dem Benutzer angezeigt wird:
<code class="php">... $text = parse_url($url, PHP_URL_HOST) . parse_url($url, PHP_URL_PATH); $text = preg_replace("/^www./", "", $text); $last = -(strlen(strrchr($text, "/"))) + 1; ...</code>
Verwendungsbeispiel
Um die Funktion zu nutzen, übergeben Sie einfach Ihren Text als Argument hinzufügen:
<code class="php">$text = "..."; $linked_text = auto_link_text($text);</code>
Ausgabe
Die Funktion gibt den Eingabetext mit in HTML-Links umgewandelten URLs zurück:
Input: This is my text. Check This out http://www.stackoverflow.com/questions/1925455/how-to-mimic-stackoverflow-auto-link-behavior Output: This is my text. Check This out <a href="http://www.stackoverflow.com/questions/1925455/how-to-mimic-stackoverflow-auto-link-behavior">stackoverflow.com/questions/1925455/...</a>
Das obige ist der detaillierte Inhalt vonWie ahme ich das Auto-Link-Verhalten von Stack Overflow in PHP nach?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!