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 , por exemplo?