Preencher com zero ou caracteres à esquerda

Hans Pufal, enviou uma função javascript para o site electrictoolbox.com que preenche uma string ou número, com caracteres à esquerda, mantendo o sinal caso seja um número negativo.

function pad (n, len, padding){
   var sign = '', s = n;

   if (typeof n === 'number'){
      sign = n < 0 ? '-' : '';
      s = Math.abs (n).toString ();
   }

   if ((len -= s.length) > 0){
      s = Array (len + 1).join (padding || '0') + s;
   }
   return sign + s;
}

Aqui o exemplo com a função em javascript:

Com PHP, seria mais fácil, pode ser usado as funções sprintf() ou printf(), a primeira para retornar uma string formatada e a outra para imprimir a string também formatada. Na função sprintf() no primeiro parâmentro você especifica como vai tratar o segundo parâmetro e sua formatação. Se você quiser preencher com zeros uma string, ela vai retornar apenas zeros.

// Usando sprintf()
echo sprintf('%020d',123);

// USANDO printf
$s = 'teste';
$t = 'meus testes';

printf("[%s]\n",      $s); // string normal
printf("[%10s]\n",    $s); // justifica à direita com espaços
printf("[%-10s]\n",   $s); // justifica à esquerda com espaços
printf("[%010s]\n",   $s); // preenche com zeros
printf("[%'#10s]\n",  $s); // preenche utilizando um caracter '#'
printf("[%10.10s]\n", $t); //  justifica à esquerda mas com corte no décimo caracter

Aqui, os exemplos para preencher com caracteres à esquerda com PHP.

Usando sprintf():
00000000000000000123
[teste]
[     teste]
[teste     ]
[00000teste]
[#####teste]
[meus teste]