7

非常に基本的な質問で申し訳ありませんが、GoogleでもSymbolHoundでも、そのような文字列を検索する簡単な方法はあり ません。また、PHPマニュアル(パターン構文preg_replace )で答えが見つかりませんでした。

$contentこのコードは、およびパラメーターを受け取る関数内にあり$lengthます。
それは何にpreg_replace役立ちますか?

$the_string = preg_replace('#\s+#', ' ', $content);
$words = explode(' ', $the_string);

if( count($words) <= $length ) 

str_word_countまた、代わりに使用する方が良いでしょうか?

4

3 に答える 3

6

このパターンは、連続するスペース文字(スペースだけでなく、改行やタブにも注意)を単一の従来のスペース('')に置き換えます。\s+「1つ以上のスペース文字で構成されるシーケンスに一致する」と言います。

#記号はパターンの区切り文字です。おそらくより一般的なのは、スラッシュで区切られたパターンを確認することです。(実際には、区切り文字なしでPHPでREGEXを実行できますが、そうすると、パターンの処理方法に影響があり、この質問/回答の範囲を超えています)。

http://php.net/manual/en/regexp.reference.delimiters.php

文字列内の単語を見つけるためにスペースに依存することは、一般的に最善のアプローチではありません\b。代わりに、単語境界マーカーを使用できます。

$sentence = "Hello, there. How are you today? Hope you're OK!";
preg_match_all('/\b[\w-]+\b/', $sentence, $words);

つまり、英数字またはハイフンのみで構成され、単語の境界で囲まれている、大きい方の文字列内のすべてのサブ文字列を取得します。

$wordsこれで、文で使用される単語の配列になります。

于 2012-07-17T11:29:01.753 に答える
1

\s+複数のスペースを一致させるために使用されます。を使用して、それらを単一のスペースに置き換えていますpreg_replace('#\s+#', ' ', $content);

str_word_count適切な場合もありますが、単語としてカウントされる追加の文字を指定する必要がある場合があります。そうしないと、UTF-8文字を使用するときに関数が誤った値を報告します。

str_word_count($str, 1, characters_that_are_not_considered_word_boundaries);

print_r(str_word_count('holóeóó what',1));

戻り値

Array ( [0] => hol [1] => e [2] => what )
于 2012-07-17T11:26:41.623 に答える
1

#区切り文字です

よく使用される区切り文字は、スラッシュ(/)、ハッシュ記号(#)、チルダ(〜)です。以下は、有効な区切りパターンのすべての例です。

$the_string = preg_replace('#\s+#', ' ', $content);

\s複数のスペース( )を単一のスペースに置き換えます

于 2012-07-17T11:27:40.787 に答える