わかりました私は問題を解決しました。@Cyborgx37 と @MikeBrant の助けに感謝します。これが解決策です。
まず、正規表現パターンを João Castro がこの質問で使用したパターンに置き換えました: Making a url regex global
そのパターンの問題は、最後に末尾のドットがキャプチャされることです。そのため、パターンの最後のセクションで、^.
最後の部分が so のように見えるように追加しました[^\s^.]
。私が読んだように、末尾のスペースやドットと一致しないでください。
これにより、前述のように bbcode に一致する問題が引き続き発生するため、preg_replace_callback() と create_function() を使用して除外しました。最終的な create_function() は次のようになります。
create_function('$match','
$match[0] = preg_replace("/\[\/?(.*?)\]/", "", $match[0]);
$match[0] = preg_replace("/\<\/?(.*?)\>/", "", $match[0]);
$m = trim(strtolower($match[0]));
$m = str_replace("http://", "", $m);
$m = str_replace("https://", "", $m);
$m = str_replace("ftp://", "", $m);
$m = str_replace("www.", "", $m);
if (strlen($m) > 25)
{
$m = substr($m, 0, 25) . "...";
}
return "<a href=\"$match[0]\" target=\"_blank\">$m</a>";
'), $string);
これまでのテストは順調に進んでいるので、問題が解決したことをうれしく思います。
もう一度ありがとう、そしてこれが他の誰かに役立つことを願っています:)