1

文字列がコピーアンドペーストであるかどうかを確認したい文字列の検証関数を作成しようとしています。

バックグラウンド:

ユーザーが最低200文字の説明テキストを入力できるCMSがあります。多くのユーザーが短すぎるテキストを書き、「200文字以上を使用する必要があります」というエラーメッセージが表示されます。これを回避するために、テキストまたは「AAAAA」などのダミー文字列をコピーして貼り付け、制限に達します。

私は今、そのようなコピー+貼り付け文字列を検出し、メッセージを表示することによってそれらを防ぐための関数/ methode/regexを探しています。

ダミーテキストを防ぐための100%の解決策はないことは知っていますが、少し減らしたいと思います。何か案は?

4

1 に答える 1

1

高速で信頼性が高く、無敵のソリューションはありません。しかし、私は妥協案を考えることができます:

preg_match('/(.{1,4})\1{3,}/', $subject)

は、1 ~ 4 文字の繰り返しシーケンスを含む文字列に対して返さTrueれます (少なくとも 3 回繰り返される場合)。

したがって、次のような文字列に一致します

AAAAAAA
asdasdasdasd
foo bar baz glglglglglglglgl

次のような長い繰り返しは検出されません

asdfgasdfgasdfgasdfg

しかし、より長い繰り返しを照合しようとすると、正規表現の複雑さが指数関数的に増加するため、4 文字が実行可能な妥協点であると思います。

または、繰り返しを文字列の末尾 (ほとんどの人がフィラーを置く場所) に固定することもできます。

preg_match('/(.+)\1{3,}$/', $subject)

もちろん、次のような文字列

LOL OMG!!!!!!!!!!!!!!!!!!!!!!!!!!!.

検出されません。あなたの選択 :)

于 2012-11-06T15:57:13.117 に答える