0

そのため、一連の冒とく的な表現を文字列でチェックしています。

例えば

$string = 'naughty string';
$words = [
    'naughty',
    'example',
    'words'
];
$pattern = '/('.join($words, '|').')/i';
preg_match_all($pattern, $string, $matches);
$matched = implode(', ', $matches[0]);

しかし、スペースで区切られた冒とく的な表現もチェックしたいと思います。

例えば

いたずら

はい、配列に追加することでこれを行うことができます:

$words = [
    'naughty',
    'n a u g h t y',
    'example',
    'e x a m p l e',
    'words',
    'w o r d s'
];

しかし、私は膨大な数の「悪い」言葉を持っており、これを行う簡単な方法があるかどうか疑問に思っていましたか?

- - - 編集 - - -

したがって、これは超正確であることを意味するものではありません。私のアプリケーションでは、すべてのスペースは新しい行です..したがって、次のような文字列: naughty stringは次のようになります:

n

a

あなた

g

時間

t

y

ストリング

4

2 に答える 2

0

次のように、単語を配列にエンコードして、\s?オプションのスペースに一致させます。

$words = [
    'n\s?a\s?u\s?g\s?h\s?t\s?y',
    'e\s?x\s?a\s?m\s?p\s?l\s?e',
    'w\s?o\s?r\s?d\s?s',
];

\s*または、任意の数のスペースに一致させるために使用できます。

正規表現のニュアンスに慣れていない場合は、https://regex101.com/をご覧になることをお勧めします。

于 2015-07-11T10:21:17.557 に答える