Heim  >  Artikel  >  Backend-Entwicklung  >  Wie ahme ich das Auto-Link-Verhalten von Stack Overflow mit PHP nach?

Wie ahme ich das Auto-Link-Verhalten von Stack Overflow mit PHP nach?

Susan Sarandon
Susan SarandonOriginal
2024-11-02 00:32:31824Durchsuche

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

Nachahmung der automatischen Linkgenerierung von Stack Overflow mit PHP

Die benutzerfreundliche Funktion zur automatischen Verknüpfung von Stack Overflow verbessert die Benutzereinbindung und die Zugänglichkeit von Informationen. In diesem Artikel wird eine von dieser Funktion inspirierte PHP-Funktion vorgestellt, die URLs nahtlos in Hyperlink-Inhalte umwandelt.

Die bereitgestellte Funktion verwendet ein robustes Regex-Muster, um URLs zu identifizieren. Anschließend werden wesentliche Komponenten aus der URL extrahiert, beispielsweise die Domäne und der Pfad. Durch die Kürzung übermäßig langer URLs wird eine optisch ansprechende und prägnante Darstellung gewährleistet.

Funktionsimplementierung:

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

Verwendungsbeispiel:

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

Eingabetext:

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

Ausgabetext:

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

Diese benutzerdefinierte PHP-Funktion emuliert effektiv die Funktion zur automatischen Verknüpfung von Stack Overflow, die URLs in Hyperlinks umwandelt, um die Lesbarkeit und Benutzererfahrung zu verbessern.

Das obige ist der detaillierte Inhalt vonWie ahme ich das Auto-Link-Verhalten von Stack Overflow mit PHP nach?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn