PHP での Stack Overflow の自動リンク動作の模倣
多くの Stack Overflow ユーザーが、プラットフォームの自動リンク機能に賞賛の意を表しています。この記事では、このような動作を PHP で再現し、URL を独自のテキスト内で視覚的に魅力的なリンクに変換できるようにする方法について説明します。
自動リンク正規表現
以下PHP 関数は、Daring Fireball の正規表現パターンを利用してテキスト内の URL を識別します。
<code class="php">function auto_link_text($text) { $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`!()\[\]{};:\'"",<>?«»“”‘’]))'; ... }</code>
リンクのフォーマット
URL が識別されると、関数はそれを解析します。ホストとパスを抽出します。この情報は、ユーザーに表示されるリンク テキストの作成に使用されます。
<code class="php">... $text = parse_url($url, PHP_URL_HOST) . parse_url($url, PHP_URL_PATH); $text = preg_replace("/^www./", "", $text); $last = -(strlen(strrchr($text, "/"))) + 1; ...</code>
使用例
関数を使用するには、テキストを渡すだけです。
<code class="php">$text = "..."; $linked_text = auto_link_text($text);</code>
Output
この関数は、HTML リンクに変換された URL を含む入力テキストを返します:
Input: This is my text. Check This out http://www.stackoverflow.com/questions/1925455/how-to-mimic-stackoverflow-auto-link-behavior Output: This is my text. Check This out <a href="http://www.stackoverflow.com/questions/1925455/how-to-mimic-stackoverflow-auto-link-behavior">stackoverflow.com/questions/1925455/...</a>
以上がPHP でスタック オーバーフローの自動リンク動作を模倣するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。