Maison  >  Article  >  développement back-end  >  Comment imiter le comportement de liaison automatique de Stack Overflow avec PHP ?

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

Susan Sarandon
Susan Sarandonoriginal
2024-11-02 00:32:31824parcourir

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

Imiter la génération automatisée de liens de Stack Overflow avec PHP

La fonctionnalité de liaison automatique conviviale de Stack Overflow améliore l'engagement des utilisateurs et l'accessibilité des informations. Cet article présente une fonction PHP inspirée de cette fonctionnalité, convertissant de manière transparente les URL en contenu hyperlien.

La fonction fournie utilise un modèle d'expression régulière robuste pour identifier les URL. Il extrait ensuite les composants essentiels de l'URL, tels que le domaine et le chemin. En tronquant les URL trop longues, il garantit un affichage visuellement attrayant et concis.

Implémentation de la fonction :

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

    // Regex callback function for URL processing
    $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 :

<code class="php">$input_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";

$output_text = auto_link_text($input_text);</code>

Texte d'entrée :

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

Texte de sortie :

<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>

Cette fonction PHP personnalisée émule efficacement le Fonctionnalité de liaison automatique Stack Overflow, transformant les URL en hyperliens pour une lisibilité et une expérience utilisateur améliorées.

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