Caro Andril,
Em primeiro lugar, muito obrigado pela resposta e pelo seu interesse em ajudar.
Da forma como vc me sugeriu melhorou bastante, mas acho que ainda não está 100% certo. Ainda está ficando desalinhado.
Fiz vários testes, mas este é mais evidente:
$mensagem = $mensagem.str_pad(substr($rw["produto"],0,12),35,"-----",STR_PAD_RIGHT)." ".$rw["prsacolao"]." ".$rw["prmaximo"].PHP_EOL;
echo "<br>";
echo substr($rw["produto"],0,12)."!!!";
echo "<br>";
echo str_pad(substr($rw["produto"],0,12),35,"-----",STR_PAD_RIGHT)."!!!";
Note que troquei o espaço por ---- para facilitar a visualização. Idem quanto ao !!! final.
Veja como aparece na tela:
pão de leite!!!
pão de leite-----------------------!!!
abacaxi (1 u!!!
abacaxi (1 u-----------------------!!!
ameixa fresc!!!
ameixa fresc-----------------------!!!
côco seco (1!!!
côco seco (1-----------------------!!!
limão (12 un!!!
limão (12 un-----------------------!!!
mamão formos!!!
mamão formos-----------------------!!!
manga Tomy (!!!
manga Tomy (-----------------------!!!
maracujá aze!!!
maracujá aze-----------------------!!!
melancia (1 !!!
melancia (1 -----------------------!!!
melão (1 uni!!!
melão (1 uni-----------------------!!!
abobrinha (2!!!
abobrinha (2-----------------------!!!
alho (+- 1 K!!!
alho (+- 1 K-----------------------!!!
batata doce !!!
batata doce -----------------------!!!
beterraba (1!!!
beterraba (1-----------------------!!!
cebola (2,5 !!!
cebola (2,5 -----------------------!!!
cenoura (4 u!!!
cenoura (4 u-----------------------!!!
chuchu (1 un!!!
chuchu (1 un-----------------------!!!
ovo vermelho!!!
ovo vermelho-----------------------!!!
Aparentemente, o número de caracteres está correto, mas em algumas linhas os caracteres ocupam mais espaço que os outros, o que causa o desalinho.
Parece então que o problema não é na str_pad(), nem na substr(), estou correto? Mas como resolver isso?