我写了一个比str_word_count
更好的函数,因为PHP函数会将破折号和其他字符计算为单词。
此外,我的函数解决了双空格的问题,而许多其他人编写的函数没有考虑到这一点。
此函数还处理HTML标签。如果您有两个标签嵌套在一起,并且简单地使用strip_tags
函数,那么当它是两个单词时,这将被计算为一个单词。例如:<h1>Title</h1>Text
或<h1>Title</h1><p>Text</p>
此外,我先删除JavaScript,否则<script>
标签内的代码将被计算为单词。
最后,我的函数处理字符串开头和结尾的空格、多个空格以及换行符、回车符和制表符。
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;
}
count(s($str)->words())
很有用,这在这个独立库中可以找到。 - caw