たとえば、mywebsite.com というシンプルなメッセージ ボードがあり、ユーザーはメッセージを投稿できます。現在、ボードはすべてのリンクをクリック可能にしています。誰かが次で始まる何かを投稿したとき:
http://, https://, www., http://www., https://www.
次に、スクリプトはそれらを自動的にリンクとして作成します (つまり、A href.. タグを追加します)。
問題 - スパムが多すぎます。したがって、私の考えは、上記の http|s/www を自動的に削除して、これらが「クリック可能なリンク」にならないようにすることです。ただし、ポスターが自分のサイト内のページにリンクできるようにしたいと考えています。メッセージに mywebsite.com へのリンクが含まれている場合は、http|s/www を削除しないでください。
私のアイデアは、2 つの配列を作成することでした。
$removeParts = array('http://', 'https://', 'www.', 'http://www.', 'https://www.');
$keepParts = array('http://mywebsite.com', 'http://www.mywebsite.com', 'www.mywebsite.com', 'http://mywebsite.com', 'https://www.mywebsite.com', 'https://mywebsite.com');
しかし、それらを正しく使用する方法がわかりません (おそらく str_replace が何らかの形で機能する可能性があります)。
以下は、投稿前と投稿後の $message の例です。
$message 前:
こんにちは、 http://mywebsite/aboutのおかげで、多くのことを学びました。http://www.bing.com、https://google.com/search、および一部のwww.spamwebsite.com/refid=spammer2であなたを見つけました。
$message AFTER:
こんにちは、 http://mywebsite.com/aboutのおかげで、多くのことを学びました。bing.com、google.com/search、およびいくつかの spamwebsite.com/refid=spammer2 であなたを見つけました。
ユーザーが投稿フォームにクリア テキストを入力することに注意してください。したがって、スクリプトはこのクリア テキストでのみ機能する必要があります (href などではありません)。