ホームページ > バックエンド開発 > PHPチュートリアル > Stack Overflow の自動リンク機能を PHP に実装するにはどうすればよいですか?

Stack Overflow の自動リンク機能を PHP に実装するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-04 11:35:02
オリジナル
514 人が閲覧しました

How Can I Implement Stack Overflow's Auto-Link Functionality in PHP?

PHP で Stack Overflow の自動リンク機能を模倣する

Stack Overflow の自動リンク動作は非常に便利で、ユーザーは簡単に Web サイトにリンクできますまたは投稿内の特定のコンテンツ。この記事では、正規表現パターンを活用して、URL を識別して HTML リンクに変換する同様の機能を PHP で実装する方法について説明します。

内部の仕組みを理解するために、提供されているコードを分解してみましょう。

<code class="php">/**
 * Replace links in text with html links
 *
 * @param  string $text
 * @return string
 */
function auto_link_text($text)
{
    // a more readably-formatted version of the pattern is on http://daringfireball.net/2010/07/improved_regex_for_matching_urls
    $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>
ログイン後にコピー

正規表現パターンの詳細:

正規表現パターンは貪欲検索 (?i) を初期化し、次のセグメントを検索します:

  • プロトコル: a-z :
  • ドメイン: wwwd{0,3}[.]|[a-z0-9.-] .{2,4}
  • パス: /(?:1 |((2 |((3 )))) ) (?:((4 |((5 ))))|6 ))

カスタム コールバック関数:

コールバック関数は HTML リンク マークアップを構築します。 URL を抽出して解析し、ドメインから先頭の「www」を削除し、必要に応じて表示される URL テキストを制限し、最後に適切な属性を持つアンカー タグを生成します。

サンプル入力と出力:

関数の動作を説明するために、次の入力テキストを考えてみましょう:

「これは私のテキストです。StackOverflow での質問についてご存知ですか: https:/ を確認してください。」 /www.php.cn/link/6e212075e04d1616b06a5e1398e10053

また、base_convert php 関数?
https://www.php.cn/link/63c0d1be32c9c7e2dee3ac21690e490c

https://www. php.cn/link/a995b410d5e76ed56523533b47e3786a"

auto_link_text() 関数による処理後の出力は次のとおりです:

"これは私のテキストです。StackOverflow での質問についてご存知ですか: 確認してください。これは stackoverflow.com/questions/1925455/…

また、base_convert php 関数?
pt.php.net/manual/en/…

pt.php.net/manual/en/…"

これらの手法を実装することで、開発者は Stack Overflow の自動リンク機能を PHP アプリケーションに簡単に組み込むことができ、ユーザー エクスペリエンスを向上させることができます。


  1. s()<>
  2. s()< >
  3. s()
  4. s()
  5. s()<>
  6. s`!()[]{};:'".,<>?«»”” '

以上がStack Overflow の自動リンク機能を PHP に実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート