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

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

Barbara Streisand
リリース: 2024-10-29 20:14:03
オリジナル
816 人が閲覧しました

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

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