Maison >développement back-end >tutoriel php >Comment imiter le comportement de liaison automatique de Stack Overflow en PHP ?

Comment imiter le comportement de liaison automatique de Stack Overflow en PHP ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-29 20:14:03803parcourir

How to Mimic Stack Overflow's Auto-Link Behavior in PHP?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn