str_pad(); para adicionar espaços

Quando executo o script abaixo, deveria preencher com espaços até completar 20 caracteres e o resultado seria a palavra Teste com espaços até preencher 20 caracteres, correto? Mas quando executo o resultado aparece apenas com 1 espaço. Deixei algo passar? (Coloquei uma barra no final do echo justamente para identificar se está adicionando os espaços, mas não está)

<?php
$nome = "Teste";

$pad = str_pad($nome,20," ",STR_PAD_RIGHT);

echo "$pad |";
?>

Como posso resolver? Agradeço desde já!

Você já tentou colocar algum caractere ao invés de espaço para verificar?

Você pode substituir seu código

$pad = str_pad($nome,20," ",STR_PAD_RIGHT);

por

$pad = str_pad($nome,20);

O terceiro elemento da função é a posição em que o espeço será adicionado, se você quer espaços após a palavra, utilize apenas:

str_pad($nome,20," ");

Já havia experimentado essas opções, mas, não sei porque, não funciona. E já tentei sim substituir por outro caractere. Com outro caractere funciona. Qual o mistério? rs

tenta utilizar chr(32) no lugar do espaço em branco.

Mesmo utilizando o chr(32) não funcionou. Não consigo entender o porque =/

O que acontece é que por ser espaço em branco ele imprimi somente como um, porém se você usar o strlen() vai ver que ele está com os 20 caracteres. Segue o teste que eu fiz:

<?php
$nome = "Teste";

$pad = str_pad($nome, 20);

echo $nome." ".strlen($nome)."<br>";
echo $pad." ".strlen($pad)."<br>";

$nome = "Teste2_";
$pad = str_pad($nome, 20, 0);

echo $nome." ".strlen($nome)."<br>";
echo $pad." ".strlen($pad)."<br>";
?>

Resultado da impressão:

Teste 5
Teste 20
Teste2_ 7
Teste2_0000000000000 20

Espero ter ajudado… abs

Muito legal, amartinss! Eu não tinha feito estes testes. Mas como eu poderia transformar esse espaçamento em algo visual sem precisar utilizar o &nbsp;, por exemplo?