meerdere nullen voor een getal

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Cees

Cees

10/03/2007 18:55:00
Quote Anchor link
Ik ben ebzig met een foto-site en ik rename elke foto naar een getal van af 1 tot het aanal foto's. Alleen nu wil ik dat foto 1 niet de naam 1 krijgt maar 001 en 22 moet dan 022 worden en 233 blijft gewoon 233 (zomaar een voorbeeld). Hoe kan ik dit makkelijk doen. De counter wordt automatisch opgehoogd. Ik heb al met str_pad geprobeerd, maar dit werkt niet met de string '0', bovendien moet ik de int van de teller steeds casten naar een string. iemand een idee?
 
PHP hulp

PHP hulp

20/11/2024 08:28:41
 
Scrptr

Scrptr

10/03/2007 19:00:00
Quote Anchor link
Een mogelijkheid is dat je eerst het aantal getallen binnen je string telt en als die voldoet aan <3 cijfers dat er dan een of 2 nullen voor worden gezet.
 
Leroy Boerefijn

Leroy Boerefijn

10/03/2007 19:01:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
if ($b < 10)
   $tekst = "0000" . $b;
elseif ($b < 100)
   $tekst = "000" . $b;
elseif ($b < 1000)
   $tekst = "00" . $b;
elseif ($b < 10000)
   $tekst = "0" . $b;
else
   $tekst = $b;
?>


erg simpel ;)

EDIT: $b is hier het cijfer en het is hier met max 5 cijfers ;)
EDIT2: ff korter gemaakt..
Gewijzigd op 01/01/1970 01:00:00 door Leroy Boerefijn
 
Cees

Cees

10/03/2007 19:03:00
Quote Anchor link
ach ja, idd. Bedankt!
 
Bart van der veen

bart van der veen

10/03/2007 19:03:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?
if(strlen($naam)==1){
  $naam='00'.$naam;
}
esleif(strlen($naam)==2){
  $naam='0'.$naam;
}
else{
  $naam=$naam;
}
//zo iets? of mis ik het punt van de vraag..
?>


weer te laat.. jammer..
Gewijzigd op 01/01/1970 01:00:00 door bart van der veen
 
Leroy Boerefijn

Leroy Boerefijn

10/03/2007 19:09:00
Quote Anchor link
graag gedaan ;)

je kunt het trouwens ook met een switch doen.. maar ik gaf deze omdat ik die nog had liggen..
 
Frank -

Frank -

10/03/2007 19:16:00
Quote Anchor link
de functie sprintf() biedt hiervoor uitkomst:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$i
= 2;

$naam = sprintf('%05d',$i);
echo $naam;
?>

- $i is het getal dat jij als basis gaat gebruiken voor de naam
- De 0 achter % geeft aan waarmee je het getal gaat aanvullen
- De 5 geeft aan hoeveel karakters het resultaat moet bevatten
- d geeft aan welk datatype wordt gebruikt

Bovenstaand voorbeeld levert op: 00002

Dus met 4 voorloopnullen, het getal 20 zal als resultaat 00020 geven.
 
Scrptr

Scrptr

10/03/2007 19:27:00
Quote Anchor link
@ Leroy, precies wat ik bedoelde :P
 
Robert Deiman

Robert Deiman

10/03/2007 19:45:00
Quote Anchor link
Frank zijn oplossing is beter eigenlijk: die functie is er eignelijk voor gemaakt om zoiets te realiseren. Het is ook nog eens korter qua script.
 
Scrptr

Scrptr

10/03/2007 19:51:00
Quote Anchor link
idd, zeker als je met 10 cijfers aan de slag moet. Maar ik ken nog niet alle functies uit mn hoofd dus was dit ook een goede oplossing. Maar voortaan gebruik ik die van Frank natuurlijk ;-)
 
Berik

Berik

10/03/2007 20:01:00
Quote Anchor link
Frank >> Heel erg bedankt voor dit simpele regeltje code!

Cees en ik zijn de hele middag bezig geweest met een foto-systeem, maar hij wilde de foto's maar niet goed sorteren. Blijkt het natuurlijk weer met zo'n simpel regeltje code helemaal te lukken.
 
Thijs X

Thijs X

10/03/2007 20:11:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?
$naam
= "1234";

$totaal_lengte = 8;
$lengte = strlen($naam);

if($lengte < $totaal_lengte)
{

    $a = "";
    for($i = 0; $i <= $totaal_lengte - $lengte - 1; $i++)
    {

        $a .= "0";
    }

    $naam = $a.$naam;
}


echo $naam;
?>


Standaard functie sprintf is beter maar had even niks te doen
Gewijzigd op 01/01/1970 01:00:00 door Thijs X
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.