str_word_count()での特殊文字のサポート

str_word_count()関数は、文字列内のすべての単語を保持する配列を返します。特殊文字を使用する場合を除いて、素晴らしい動作をします。この場合、phpスクリプトはquerystringで文字列を受け取ります。

When i open: http://localhost/index.php?q=this%20wórds

header('Content-Type: text/html; charset=utf-8');
print_r(str_word_count($_GET['q'],1,'ó'));

戻るの代わりに:

[0] this
[1] wórds

…それは返す:

[0] this
[1] w
[2] rds

この関数は、クエリー文字列を介して送信されている特殊文字をどのようにサポートしますか?

Update – it worked out just fine by using
mario‘s
solution:

function sanitize_words($string) {
    preg_match_all("/p{L}[p{L}p{Mn}p{Pd}'x{2019}]*/u",$string,$matches,PREG_PATTERN_ORDER);
    return $matches[0];
}
ベストアンサー

str_word_count
をASCII以外の記号でも動作させるには、3番目のパラメータで十分であるかどうかは不明です。これはおそらく、
Latin-1 としか動作しません。

代わりに、あなたは正規表現で単語を数えることができます:

$count = preg_match_all('/pL+/u', $_GET['q'], $matches);

これは少なくともUTF-8で動作します。 str_word_count を完全に複製するには、最終的に
[ pL '] + が必要な場合があります。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です