2012-05-28 3 views
0

Я пытаюсь подсчитать слова в поле textarea. Ниже приведена простая функция, использующая устаревшие eregi и eregi_replace.PHP eregi и eregi_replace confusion

Я знаю, что могу обменять эти две функции с помощью preg_match и preg_replace, но мне не хватает того, что после этого. Я уверен, что параметры настройки настроены.

function count_words($str){ 
//http://www.reconn.us/count_words.html 
$words = 0; 
$str = eregi_replace(" +", " ", $str); 
$array = explode(" ", $str); 
for($i=0;$i < count($array);$i++) 
{ 
if (eregi("[0-9A-Za-zÀ-ÖØ-öø-ÿ]", $array[$i])) 
$words++; 
} 
return $words; 
} 

Если я правильно понимаю, для preg_match, я должен добавить "я":

if (preg_match("[0-9A-Za-zÀ-ÖØ-öø-ÿ]/i", $array[$i])) 

Но я не уверен, что preg_replace.

+4

'эрги *' функции устарели. Вы переключаетесь на функции 'preg *', чтобы гарантировать, что ваше программное обеспечение будет работать в будущем. – hakre

ответ

1

Подсчет слов можно сделать путь более легко:

$words = mb_split(' +', $text); 
$wordCount = count($words); 

Однако preg_replace линия должна быть эта:

preg_replace('/(+)', ' ', $str); 
+0

Верно, я должен был упомянуть, что мне также нужно знать правильный способ преобразования этих 2 устаревших функций. Есть другие места в более раннем коде, которые мне нужно обновить, соответственно. – coffeemonitor

+0

Хорошо, обновил мой ответ – Jeroen

+0

Ницца! Спасибо, Jeroen! – coffeemonitor