djdiplomat

djdiplomat
Рейтинг
136
Регистрация
05.08.2009

А вот скажите, а вот если расширить этот код.

$text = 'Сегодня MXZ$@ доволен'; // 21 символ в переменной

echo mb_strlen($text,'UTF-8');

echo $text{20};

т.е 20-я буква "о" не выводится. как быть в таких случаях? по аналогии понимаю, что что-то с кодировкой тоже.... или я не прав?

Спасибо! Помогло...

Так тоже 35

$text = 'Сегодня MXZ$@ доволен'; // 21 символ в переменной

echo mb_strlen($text);

Не а!

Вот я сейчас попробовал!

Ответ 35!

Можете сами проверить скопировав сюда весь код.

http://writecodeonline.com/php/

Присоединяюсь к вопросу. Тоже интересует.

fervent, спасибо большое! Остальным тоже спасибо за альтернативные варианты!

PS Я тут вижу, даже небольшой спор возник между профессионалами. Если гуру не против, мне будет очень интересно и полезно узнать, какое же из решений будет сочтено как наиболее приемлемое (идеальное).

Как по мне, так идеально то, которое учитывает все возможные варианты и дает верный ответ экономя ресурсы...

siv1987:
Ну два альтернативных решений выше уже дали, вот еще одно немного улучшенное

find: /([^\s]+)\s+(?:\1(\s+|$|\.|,))+/
replace: $1$2

исключения юзать по варианту предложенному RiDDi.

А что-то почему то не прокатывает вообще замена...т.е он почему то не юзает по строке.... даже пробовал просто на удаление ставить...

$z = "идет пешеход пешеход по дороге лесной лесной и радуется радуется очень сильно.";

$result = preg_replace ("/([^\s]+)\s+(?:\1(\s+|$|\.|,))+/", "", $z);

echo $result;

Тупо строка без изменений возвращается...

LEOnidUKG:
Зачем?...........

Ну задание такое.... =) Найти альтернативное решение... Вообще это из задачника....

Там задачки и по хлеще были. Типа, как поменять переменные а и б местами без использования ц. Ну это я нашел, там с исключающим или прикол. А тут вот пока еще нет...

ВОТ ТЕКСТ ЗАДАЧИ:


Используя регулярные выражения, составьте программу, которая будет искать подряд идущие слова в тексте и заменять их одним. При этом Вам необходимо предусмотреть возможность добавления исключений (слов, которые будут пропускаться программой в случае повторения)

Примечание: Использование оператора if запрещается.
Ladycharm:
Непонятно, что считает ТС одинаковыми словами в примере: 'идет мальчик-с-пальчик пальчик в гипсе', и удовлетворяет ли результат работы регулярки ТЗ :)

одинаковыми словами считаются лишь подряд идущие слова. (вот как в ворде если два раза подряд набрать одно и тоже слово, то второе ворд подчеркивает.) Вот тот же принцип.

Т.е под словом понимается последовательность букв и цифр разделенных между собой пробелами.

Все. Вкурил =) Признаю свою лень...

Спасибо всем.

В ман я конечно, заглянул (просто изначально не внимательно прочел).

Правда, что-то пока в это дело

$text = preg_replace ('/Привет/ie',"\$counter++==1?'Здравствуй':'\\0'",$text);

(жирным пометил) не вкурил...

Всего: 348