0

ユーザーが任意のテキスト (URL を含むがこれに限定されない) を入力できるようにしたい textarea フィールドがあります。入力に対して html を無効にしているため、タグは使用できません。これらのタイプの URL をリンクに変換できるようにする必要があります。

http://example.com
www.example.com
example.com
http://example.com/path/to/something
http://example.com/path/to/something.php?v1=a&v2=b

または基本的に、ユーザーがブラウザからコピー/貼り付けできる任意の URL。完全に機能するバージョンを取得するのに近づいていますが、正規表現が www.example.com テキストで正しく機能していません。私が使用しているPHPコードは次のとおりです。

// Convert links in a string to links
function linkify($str)
{   
    // Change www.example.com into http://www.example.com
    $str = str_replace('www.', 'http://www.', $str);
    $str = str_replace('http://http://www.', 'http://www.', $str);

    // Find and replace
    $exp = '@(http)?(s)?(://)?(([-\w]+\.)+([^\s]+)+[^,.\s])@';
    preg_match_all($exp, $str, $matches);
    $matches = array_unique($matches[0]);
    foreach($matches as $match) 
    {
        $replacement = '<a href="'.$match.'">'.$match.'</a>';
        $str = str_replace($match, $replacement, $str);
    }
    return $str;
}

コードを微調整して、すべてのサンプル URL で動作するようにするのを手伝ってくれる人はいますか?

4

0 に答える 0