Дополнение строки функцией str_pad

r-tem

Новичок
Дополнение строки функцией str_pad

php5.2 winXp
Помогите пжлста разобраться с функицей str_pad()...Дополнить надо строку $v в массиве $order, чтоб цифры были в один ряд на выходе...
PHP:
$order=array('Длинннннннное слово','Длллиииииннннонеое слово','Тоже длиннннннооооее слово','Короткое','Очееееньььь длинноее','Короткое слово');

foreach($order as $v){
	$str=str_pad($v,55,' +');
	echo $str.strlen($str)."\n";
}
Получается следующее...Цифры скачут, как кони, и размер строки по нашим с MS Word`om ) подсчетам другой нежели на выходе...
PHP:
Длинннннннное слово + + + + + + + + +55
Длллиииииннннонеое слово + + + +55
Тоже длиннннннооооее слово + + 55
Короткое + + + + + + + + + + + + + + + + + + + 55
Очееееньььь длинноее + + + + + + + +55
Короткое слово + + + + + + + + + + + + + +55
 

baev

‹°°¬•
Команда форума
Ничего у Вас не «скачет».
Это Вам наверное показалось просто.

P.S. Гм.
У меня под php 4.3.10 в самом деле результат другой:
Код:
Длинннннннное слово + + + + + + + + + + + + + + + + + +55
Длллиииииннннонеое слово + + + + + + + + + + + + + + + 55
Тоже длиннннннооооее слово + + + + + + + + + + + + + + 55
Короткое + + + + + + + + + + + + + + + + + + + + + + + 55
Очееееньььь длинноее + + + + + + + + + + + + + + + + + 55
Короткое слово + + + + + + + + + + + + + + + + + + + + 55
 

r-tem

Новичок
У меня под php 4.3.10 в самом деле результат другой:
У Вас на UNIX`e PHP?
Мне не почудилось....Из-за принципа разделения строк в ОС такие метамарфозы скорее всего...Я пробовал на хостинге всё гут...
На двух разных компьютерах попоробовал(PHP 5.2, Win XP)- результат прежний...
 

r-tem

Новичок
Автор оригинала: walrus
Так у вас в браузере скачет? :)
))Не мне это на надо на печать отправить через pecl4win...Я не через бразер тестирую...

Может ктонибудь ещё в своей 5 - ой версии под win протестировать!!!!
 

WP

^_^
Код:
Длинннннннное слово + + + + + + + + + + + + + + + + + +55
Длллиииииннннонеое слово + + + + + + + + + + + + + + + 55
Тоже длиннннннооооее слово + + + + + + + + + + + + + + 55
Короткое + + + + + + + + + + + + + + + + + + + + + + + 55
Очееееньььь длинноее + + + + + + + + + + + + + + + + + 55
Короткое слово + + + + + + + + + + + + + + + + + + + + 55
 

r-tem

Новичок
Баг в php5 под вин получается?

-~{}~ 09.04.07 05:56:

Может проблема в том, что он неправильно понимает текстовый и бинарный режим...Недавно просто из книги взял пример...Ни в какую под винду не работает...В бинарном и текстовом режиме один и тотже код выдает...

PHP:
## Различие текстового и бинарного режимов.
// Получает в параметрах строку и возвращает через пробел коды
// символов, из которых она состоит.
function makeHex($st) { 
  for ($i=0; $i<strlen($st); $i++)
    $hex[] = sprintf("%02X", ord($st[$i]));
  return join(" ", $hex);
}

// Открываем файл скрипта разными способами
$f = fopen(__FILE__, "rb");  // бинарный режим
echo makeHex(fgets($f, 100)), "<br>\n";

$f = fopen(__FILE__, "rt"); // текстовый режим
echo makeHex(fgets($f, 100)), "<br>\n";
 

SiMM

Новичок
> Баг в php5 под вин получается?
Нифига не получается
C:\> php -v
PHP 5.2.0 (cli)
Код:
Длинннннннное слово + + + + + + + + + + + + + + + + + +55
Длллиииииннннонеое слово + + + + + + + + + + + + + + + 55
Тоже длиннннннооооее слово + + + + + + + + + + + + + + 55
Короткое + + + + + + + + + + + + + + + + + + + + + + + 55
Очееееньььь длинноее + + + + + + + + + + + + + + + + + 55
Короткое слово + + + + + + + + + + + + + + + + + + + + 55
 

r-tem

Новичок
А почему сообщение WP(где кста был кривой результат) Отредактировано SiMM 09.04.07 в 08:06?

-~{}~ 09.04.07 09:30:

Граждане, обратите внимание на интересный факт...
Вот такая конструкция работает без проблем:
PHP:
$str=array('English word','Big English word','Small word','Smallest');
foreach($str as $v){
	echo str_pad($v,40,'+')."\n";
}
C добавлением РУССКИХ СЛОВ начинаются "скачки":(работаю в uf-8)

PHP:
$str=array('English word','Big Рашн word','Small word','Smallest');
foreach($str as $v){
	echo str_pad($v,40,'+')."\n";
}
Всё изменятся, когда русские конвертирую с помощью функции utf8_decode...Результат нормальный...

PHP:
$str=array('English word','Big Рашн word','Small word','Smallest');
foreach($str as $v){
	$qwe.=str_pad(utf8_decode($v),40,'+')."\n";
}

echo $qwe;
 

Gorynych

Посетитель PHP-Клуба
r-tem

WinXP, php 5.2.1, запус из командной строки
Код:
Длинннннннное слово + + + + + + + + + + + + + + + + + +55
Длллиииииннннонеое слово + + + + + + + + + + + + + + + 55
Тоже длиннннннооооее слово + + + + + + + + + + + + + + 55
Короткое + + + + + + + + + + + + + + + + + + + + + + + 55
Очееееньььь длинноее + + + + + + + + + + + + + + + + + 55
Короткое слово + + + + + + + + + + + + + + + + + + + + 55
по нашим с FAR подсчетом, последний символ модифицированной строки (это "+" для первой и " " для остальных) расположен в 55 колонке или позиции. напечатанные символы 55 не входят в модифицированную строку и выводятся функцией strlen по результату вычисления длины строки до них.

так как в конце строки наличиствует только \n, и отсутствует традиционный для windows \r, сам конец строки оказывается распознаваемым в текстовом редакторе не совсем верно (курсор помещается за числом 55)
 

boombick

boombick.org
Linux, php 5.1.6
тоже косячно :)
Код:
Длинннннннное слово + + + + + + + + +55
Длллиииииннннонеое слово + + + +55
Тоже длиннннннооооее слово + + 55
Короткое + + + + + + + + + + + + + + + + + + + 55
Очееееньььь длинноее + + + + + + + +55
Короткое слово + + + + + + + + + + + + + +5
 

SiMM

Новичок
Автор оригинала: r-tem А почему сообщение WP(где кста был кривой результат) Отредактировано SiMM 09.04.07 в 08:06?
Потому что WP не догадался воспользоваться тэгом
Код:
, чтобы результат был выведен моноширинным шрифтом.

[size=1][i]-~{}~ 09.04.07  11:04:[/i][/size]

> (работаю в utf-8)
Мдя... а кто Вам сказал, что функция str_pad работает с мультибайтовыми кодировками? Это ж надо сколько времени нам голову морочили :)
 
Сверху