ホームページ  >  記事  >  バックエンド開発  >  PHP でスタック オーバーフローの自動リンク動作を模倣するにはどうすればよいですか?

PHP でスタック オーバーフローの自動リンク動作を模倣するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-02 00:32:31824ブラウズ

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

PHP を使用した Stack Overflow の自動リンク生成の模倣

Stack Overflow のユーザーフレンドリーな自動リンク機能は、ユーザーエンゲージメントと情報へのアクセシビリティを強化します。この記事では、URL をハイパーリンクされたコンテンツにシームレスに変換する、この機能からインスピレーションを得た PHP 関数を紹介します。

提供される関数は、堅牢な正規表現パターンを利用して URL を識別します。次に、ドメインやパスなどの重要なコンポーネントを URL から抽出します。過度に長い URL を切り詰めることにより、視覚的に魅力的で簡潔な表示が保証されます。

関数実装:

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

使用例:

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

入力テキスト:

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

このカスタム PHP 関数は、スタック オーバーフローの自動リンク機能。URL をハイパーリンクに変換して、読みやすさとユーザー エクスペリエンスを向上させます。

以上がPHP でスタック オーバーフローの自動リンク動作を模倣するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。