Я написал функцию, которая лучше, чем 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;
}