Коды упростил как мог, чтобы было понятно. Первый код работает корректно. Код (Text): foreach($h3 as $keyh3) { preg_match_all('/\b([a-z]+)\b/si',$buf,$m);// ищем английские слова в тексте $kol=count($m[1]);// кол-во англ. слов preg_match_all('/\b([а-я]+)\b/si',$buf,$m);// ищем русские слова в тексте $kol2=count($m[1]); // кол-во русских слов $keyh3=preg_replace('/[а-я]+/si','',$keyh3); preg_match_all('/(<h3.+?(<\/h3>))/',$keyh3,$match); foreach($match[1] as $h33) { if(($kol)>$kol2) { echo $h33; // если английских слов больше выводим нужные блоки. } Во втором коде то же самое. Только я не вывожу полученные блоки, а складываю в переменную. Код (Text): $a=""; foreach($h3 as $keyh3) { preg_match_all('/\b([a-z]+)\b/si',$buf,$m);// ищем английские слова в тексте $kol=count($m[1]);// кол-во англ. слов preg_match_all('/\b([а-я]+)\b/si',$buf,$m);// ищем русские слова в тексте $kol2=count($m[1]); // кол-во русских слов $keyh3=preg_replace('/[а-я]+/si','',$keyh3); preg_match_all('/(<h3.+?(<\/h3>))/',$keyh3,$match); foreach($match[1] as $h33) { if(($kol)>$kol2) { $a.=$h33; } } } echo $a; Итог имею результат, но фактически в него попадет и всякий шлак. Т.е. как буд-то условие $kol>$kol2 не работает. Что не так ??? Заранее спасибо.
Вопрос снят. Оказалось, что в одном случае я просто не указал setlocale(LC_ALL, 'ru_RU.CP1251', 'rus_RUS.CP1251', 'Russian_Russia.1251');