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

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

Barbara Streisand
Barbara Streisandオリジナル
2024-10-29 20:14:03805ブラウズ

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

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 サイトの他の関連記事を参照してください。

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