Imiter le comportement de liaison automatique de Stack Overflow en PHP
De nombreux utilisateurs de Stack Overflow ont exprimé leur admiration pour la fonctionnalité de liaison automatique de la plateforme. Cet article explique comment reproduire un tel comportement en PHP, vous permettant de transformer des URL en liens visuellement attrayants dans votre propre texte.
L'expression régulière de lien automatique
Ce qui suit La fonction PHP utilise un modèle d'expression régulière de Daring Fireball pour identifier les URL dans le texte :
<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>
Formatage des liens
Une fois qu'une URL est identifiée, la fonction l'analyse pour extraire l'hôte et le chemin. Ces informations sont ensuite utilisées pour créer le texte du lien, qui est affiché à l'utilisateur :
<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>
Exemple d'utilisation
Pour utiliser la fonction, transmettez simplement votre texte en argument :
<code class="php">$text = "..."; $linked_text = auto_link_text($text);</code>
Sortie
La fonction renverra le texte d'entrée avec les URL converties en liens HTML :
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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!