str_word_count()函數返回一個數組,該數組包含字符串中的所有單詞。除非使用特殊字符,否則它效果很好。在這種情況下,PHP腳本通過查詢字符串接收字符串:使用str_word_count()支持特殊字符
當我打開: 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
該功能如何支持這些特殊字符t帽子是通過querystring發送的?
更新 - 它的工作就好用mario的解決方案:
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];
}
它也很棒。第一個和第二個正則表達式有什麼區別?無法讓第二個人工作。 – andufo
第二個將允許像'不'這樣的東西被算作單個詞。完整的正則表達式當然是''/ [\ pL'] +/u''。手冊http://de.php.net/manual/en/function.str-word-count.php#85592中有另一個版本,可能涵蓋所有其他應該被視爲單詞的印刷版本。 – mario
「/ \ p {L} [\ p {L} \ p {Mn} \ p {Pd}'\ x {2019} */u」---謝謝! – andufo