HTML を含む何百万ものユーザー生成投稿を含む大規模な Web サイトを運営しています。これらの投稿の一部には、広告主が宣伝したくないデリケートな言葉が含まれています。これらの投稿を削除する代わりに、「悪い」言葉を検閲したいと思います. ユーザーが投稿をマークアップできるようにすることは、サイトの主要な機能であるため、マークアップを保持する必要もあります。
私は現在、検索と置換を使用してstr_ireplace()
いますが、私たちの作成者は賢くなり、私の基本的なフィルターをすり抜けること (以下) を行っています。タグを取り除いて不適切な単語を検出することはできますが、マークアップをそのままにして単語を置き換える方法を探しています。
例:
検閲に成功しました:
input: "<p>Mary is a bitch.</p>"
output: "<p>Mary is a *****.</p>"
検閲に失敗しました:
input: "<p>Mary is a <strong>b</strong>itch.</p>"
failed output: "<p>Mary is a <strong>b</strong>itch.</p>"
desired output: "<p>Mary is a <strong>*</strong>****.</p>"