我写了一个更好的函数,str_word_count
因为 PHP 函数将破折号和其他字符计为单词。
我的函数还解决了双空格的问题,其他人编写的许多函数都没有考虑到这个问题。
这个函数也处理 HTML 标签。如果您将两个标签嵌套在一起并简单地使用该strip_tags
功能,那么当它是两个时,这将被视为一个单词。例如:<h1>Title</h1>Text
或<h1>Title</h1><p>Text</p>
此外,我首先去掉了 JavaScript,否则标记中的<script>
代码将被视为单词。
最后,我的函数处理字符串开头和结尾的空格、多个空格和换行符、返回字符和制表符。
###############
# Count Words #
###############
function count_words($str)
{
$str = preg_replace("/[^A-Za-z0-9 ]/","",strip_tags(str_replace('<',' <',str_replace('>','> ',str_replace(array("\n","\r","\t"),' ',preg_replace('~<\s*\bscript\b[^>]*>(.*?)<\s*\/\s*script\s*>~is','',$str))))));
while(substr_count($str,' ')>0)
{
$str = str_replace(' ',' ',$str);
}
return substr_count(trim($str,' '),' ')+1;
}