0

いくつかのリンクを含む文字列があります。クリック可能なリンクに変換する必要がありますが、問題は、これらの多くが http または www で始まらないことです。文字列の残りの部分に誤って影響を与えずに変換するにはどうすればよいですか?

サンプル文字列: http://pastebin.com/bMe9pGbv

4

2 に答える 2

1

まず、テキストからすべてのリンクを分離する必要があります。リンクにはスペースがないと想定しているため、スペースを区切り文字として使用して、explodeで配列を作成します。

$rows = explode(' ', $text);

次に、各行からリンクを特定し、http://(リンクがない場合) 追加し、<a>タグを追加します。

foreach ($rows AS $key => $row) {
    if (preg_match("@^[^\.\n]+\.[^ \n]+$@", $row)) {
        if (!preg_match('@^http://@', $row)) {
            $row = 'http://' . $row;
        }

        $rows[$key] = '<a href="'.$row.'">'.$row.'</a>';
    }
}

最後に、implodespace区切り文字を使用して、テキストを再構築します。

$text = implode(' ', $rows);
于 2012-07-23T09:07:15.923 に答える
-1

実際の URL (スキームで始まる) を検出し、<a>.

<?php
echo preg_replace(
    "/(http:\/\/|ftp:\/\/|https:\/\/)([^\s,]*)/i",
    "<a href=\"$1$2\">$1$2</a>",
    $input
);

スキームで始まらない任意のクリック可能なリンクを検出するには、より複雑な正規表現と推測が必要です。

于 2012-07-23T08:36:30.533 に答える