ホームページ  >  記事  >  バックエンド開発  >  PHP で Stack Overflow の自動リンク機能を模倣するにはどうすればよいですか?

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

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-30 13:32:27634ブラウズ

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

Stack Overflow の自動リンク機能の模倣

Web コンテンツを強化するには、Stack Overflow の自動リンク機能をシミュレートすることを検討してください。この関数を使用すると、プレーンな URL を視覚的に魅力的なハイパーリンクに変換できます。

PHP での実装

次に、Stack Overflow の動作からインスピレーションを得た PHP 関数を示します。

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

使用例

次の入力テキストを考えてみましょう:

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

auto_link_text 関数を使用すると、このテキストは変換されます:

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

カスタマイズ

コールバック関数を変更することで、リンク動作を調整できます。たとえば、次のことが可能です。

  • リンク テキストの形式を変更する
  • リンク タグに属性を追加する
  • 自動リンクから特定の URL を除外する

実装を調整することで、特定のニーズを満たすカスタム自動リンク ソリューションを作成できます。

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

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