重複の可能性:
テキスト内の URL を HTML リンクに置き換える
PHPでプレーンテキストリンクをハイパーテキストリンクに変換するコードを書いています。私は正規表現を使用しています(ほとんど何も知りません)が、いくつかの問題に直面しています:
- 式にアイテムを条件付きで含める/除外する方法がわかりません
- 式に URL パラメータを含める方法がわかりません
- 私は正規表現についてあまり知りません!
これは私が書いたコードです:
function text2link($text)
{
$text = preg_replace
(
"/(ftp\.|www\.|http:\/\/|https:\/\/|)(.*)(\.)(com|net|co\.uk)/i",
"<a href='http://$2$3$4' target='_blank'>$1$2$3$4</a>",
$text
);
return $text;
}
このコードは、次のハイパーリンクの「スタイル」を変換します。
http://www.google.com
www.google.com
google.com
などですが、リンクは HTTP に強制されます。何を入力しても、式は HTTP を強制します。必要なプロトコルを条件付きで含めることは可能ですか? 例えば:
"<a href='[SOME IF-CONDITION GOES HERE TO DECIDE WHAT PROTOCOL TO USE]$2$3$4' target='_blank'>$1$2$3$4</a>",
この条件は、次のようなものです。
if $1 == "http, else if $1 == "https", else if $1 == "ftp",
などなど
また、十分な拡張機能を考慮していないことにも気付きました。これは現在、単なるテスト コードです。
編集:私は、200行を必要とする「フールプルーフ」で壊れないソリューションを探しているわけではないことに注意してください。一部の不明瞭なドメインが取得されなくてもかまいません。最も一般的なドメインと URL が検出され、クリック可能なリンクに変換されるようにしたいだけです。