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

Comment imiter la fonctionnalité de liaison automatique de Stack Overflow en PHP ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-30 13:32:27715parcourir

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

Imiter la fonctionnalité de liaison automatique de Stack Overflow

Pour améliorer le contenu Web, envisagez de simuler la fonctionnalité de liaison automatique de Stack Overflow. Cette fonction permet la conversion d'URL simples en hyperliens visuellement attrayants.

Implémentation en PHP

Voici une fonction PHP inspirée du comportement de Stack Overflow :

<code class="php">function auto_link_text($text)
{
   // URL matching regex pattern from Daring Fireball
   $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`!()\[\]{};:\'".,<>?«»“”‘’]))';

   $callback = create_function('$matches', '
       $url       = array_shift($matches);
       $url_parts = parse_url($url);

       $text = parse_url($url, PHP_URL_HOST) . parse_url($url, PHP_URL_PATH);
       $text = preg_replace("/^www./", "", $text);

       $last = -(strlen(strrchr($text, "/"))) + 1;
       if ($last < 0) {
           $text = substr($text, 0, $last) . "&amp;hellip;";
       }

       return sprintf(\'<a rel="nofollow" href="%s">%s</a>\', $url, $text);
   ');

   return preg_replace_callback($pattern, $callback, $text);
}</code>

Exemple d'utilisation

Considérez le texte de saisie suivant :

<code class="text">This is my text.  I wonder if you know about asking questions on StackOverflow:
 Check This out http://www.stackoverflow.com/questions/1925455/how-to-mimic-stackoverflow-auto-link-behavior

 Also, base_convert php function?
http://pt.php.net/manual/en/function.base-convert.php#52450

http://pt.php.net/manual/en/function.base-convert.php?wtf=hehe#52450</code>

À l'aide de la fonction auto_link_text, ce texte est transformé :

<code class="html">This is my text.  I wonder if you know about asking questions on StackOverflow:
 Check This out <a rel="nofollow" href="http://www.stackoverflow.com/questions/1925455/how-to-mimic-stackoverflow-auto-link-behavior">stackoverflow.com/questions/1925455/&hellip;</a>

 Also, base_convert php function?
<a rel="nofollow" href="http://pt.php.net/manual/en/function.base-convert.php#52450">pt.php.net/manual/en/&hellip;</a>

<a rel="nofollow" href="http://pt.php.net/manual/en/function.base-convert.php?wtf=hehe#52450">pt.php.net/manual/en/&hellip;</a></code>

Personnalisation

Vous pouvez personnaliser le comportement de liaison en modifiant la fonction de rappel. Par exemple, vous pouvez :

  • Modifier le format du texte du lien
  • Ajouter des attributs supplémentaires à la balise de lien
  • Exclure certaines URL de la liaison automatique

En peaufinant la mise en œuvre, vous pouvez créer une solution de liaison automatique personnalisée qui répond à vos besoins spécifiques.

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