Автор оригинала: dimagolov
Frog, не знаю в каком уме Acraft, но после моего замечания потер весь свой код, который хоть как-то отражал то, что он делал и где у него была проблема. люди же в здравом уме (ну или хотя бы ознакомившиеся с правилами форума) поступают так, как сказал tony2001
Он потер код для того, чтобы коротко и внятно описать суть вопроса, не заставляя посетителей форума разгребать его сырой код для того, чтобы понять что ему надо.
-~{}~ 04.09.08 19:09:
Автор оригинала: tony2001
хм. может быть, просто название неясное, но тут ничего сложного нет.
нужна информация в таком виде:
я выполняю <скрипт> и получаю <неправильный результат>, а ожидаю получить <правильный результат>. непорядок!
если разработчик запускает <скрипт> и получает-таки <неправильный результат>, можно считать, что уже пол-дела сделано.
очень сильно желательно, чтобы <скрипт> не требовал экзотической конфигурации, доп. софта (Pear, ZF, ezC и др.), нужен именно короткий самодостаточный скрипт, демонстрирующий проблему.
Спасибо.
-~{}~ 04.09.08 19:21:
Вот конкретный код, который у Acraft -а показывает баг PHP 5.2.6:
Простое описание, ниже будет еще особенность:
$str="testабв"; //строка в Win1251
echo substr($str,0,5);
выводит: testабв, а должен testа
а вот это, естественно, работает:
$str=iconv("Win1251","UTF8","testабв"); //строка в UTF
echo substr($str,0,5);
выводит: testа
и
$str=iconv("Win1251","UTF8","testабв"); //строка в UTF
echo mb_substr($str,0,5);
выводит: testа
Проблема в том, что в его проекте $str содержит бинарные данные, например, тело JPG файла. И, если в этом теле есть хоть одна русская буква, то substr() из такой строки $str возвращает не то, что его просят.
И вот особенность- баг наблюдается только тогда, когда позиция, начиная с которой надо вернуть строку, находится после хотябы одной русской буквы, т.е.:
$str="testабв"; //строка в Win1251
echo substr($str,0,3);
выводит: tes
а вто это:
$str="testабвtest"; //строка в Win1251
echo substr($str,8,3);
выводит: строку из космоса, а должен: est
----
Еще раз напомню- в проверенных Acraft-ом версиях PHP 5.2.5, 5.1.6, 4.4.1 бага нет,
т.е. в указанных версиях
$str="testабв"; //строка в Win1251
echo substr($str,0,5);
выводит: testа
---