2014-06-20 11 views
5

Mam następujący wiersz w moim kodzie, który wyświetla moje wyniki w postaci 6 znaków z zerami wiodącymi.PHP sprintf Space Padding

$formatted_value = sprintf("%06d", $phpPartHrsMls); 

Chcę zastąpić początkowe zera spacjami. Wypróbowałem wszystkie znalezione przykłady, przeszukując tę ​​stronę i inne i nie mogłem tego rozgryźć.

Oto niektóre próbowałem.

$formatted_value = sprintf("%6s", $phpPartHrsMls); 

$formatted_value = printf("[%6s]\n", $phpPartHrsMls); // right-justification with spaces 

Dzięki za pomoc !!

+1

Jaki jest przykład '$ phpPartHrsMls'? –

+0

Powinno to działać, jeśli wypiszesz plik lub stdout. W przeglądarce - jak słusznie wspomniano Niet the Dark Absol - spacje mają różną semantykę, a lepiej użyć '

'. – Fabian

+0

Jego liczba wyjściowa - 300 – user2883088

Odpowiedz

5

W przeglądarce spacje zawsze będą zwinięte.

Spróbuj:

<pre><?php echo $formatted_value; ?></pre> 

A kiedy jesteś zadowolony z tego, przyjrzeć CSS white-space:pre-wrap - bardzo użyteczne właściwości!

+0

Spróbuję twojej sugestii ... dziękuję! – user2883088

1

użyć numeru %06d, proszę spróbować większej liczby.

kod może niektóre rzeczy jak poniżej try:

printf('%20.2f', $phpPartHrsMls); 

i można korzystać &nbsp; dla przestrzeni na dysku html.

+0

Dzięki ... ale nie działa – user2883088

0

Zmiana początkowych zer do czołowych miejsc:

$formatted_value = sprintf("%' 6s", $phpPartHrsMls); 
1

Będzie to wyrównać po lewej stronie ze spacjami:

$formatted_value = sprintf("%6s", $phpPartHrsMls); 
echo "<pre>" . $formatted_value . "</pre>"; 

ten dostosuje prawo ze spacjami:

$formatted_value = sprintf("%-6s", $phpPartHrsMls); 
echo "<pre>" . $formatted_value . "</pre>"; 

jeśli chcesz wydrukować tylko sześć cyfr, a inne do usunięcia:

Co więcej, przeglądarka generalnie zignoruje spacje, więc lepiej jest opakować dane wyjściowe w tagu <pre>.