number_format hulp
ik heb een csv-bestand waarin de volgende waarden instaan:
winkelprijs:
1.222,20
200,00
1,29
Nu wil ik dus de komma's wijzigen door punten mede omdat SQL hier niet mee omgaat en het zoeken vanuit PHP gaat niet goed. Maar, het eerste bedrag wat te zien is "1.222,20" wil ik dus ook veranderen in 1222.20.
Ik weet dat het met number_format of money_format gedaan kan worden alleen, ik kom er niet uit.
Heeft iemand hier misschien een oplossing voor?
Alvast bedankt voor jullie hulp
Ik denk dat je eerder met str_replace() aan de gang moet want een getal met een komma er in wordt altijd gezien als twee losstaande getallen. Een komma hoort niet in een getal.
Ik heb nog niet echt met str_replace gewerkt, heb je misschien een testfile wat ook aanslaat op mijn probleem?
Ik kan er helaas ook niets aan doen dat die komma's erin zitten, ik krijg dat csv-bestand zo aangeleverd.
Alvast bedankt ;)
Toevoeging op 10/06/2011 00:29:22:
Update:
Ik heb nu met str_replace() ervoor gezorgd dat de komma's worden vervangen door punten.
Een bedrag van 122,22 wordt nu dus 122.22
Maar, een waarde zoals "1.220,20" wordt dus 1.220.20.
Wanneer ik dit zou importeren in mijn MySQL database krijg ik dit:
1.22 i.p.v 1220.20.
Wat ook normaal is want het veld is een decimal 19,2.
Dus mijn vraag nu, hoe krijg ik het ook het eerste punt weg bij 1.220.20?
Alvast bedankt ;).
Toevoeging op 10/06/2011 01:00:34:
Update:
Ik heb het probleem opgelost met str_replace() en strpos().
Bedankt voor jullie hulp ;).
Gewijzigd op 10/06/2011 00:08:05 door Pieter Havelink
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$bedrag_uit_csv_bestand = '1.222,20';
// Om deze 2 regels gaat het:
$bedrag_aangepast = str_replace('.', '', $bedrag_uit_csv_bestand);
$bedrag_aangepast = str_replace(',', '.', $bedrag_aangepast);
// Even testen:
echo 'Bedrag uit het csv-bestand is ' . $bedrag_uit_csv_bestand . '.<br>';
echo 'Het aangepaste bedrag is ' . $bedrag_aangepast . '.';
?>
$bedrag_uit_csv_bestand = '1.222,20';
// Om deze 2 regels gaat het:
$bedrag_aangepast = str_replace('.', '', $bedrag_uit_csv_bestand);
$bedrag_aangepast = str_replace(',', '.', $bedrag_aangepast);
// Even testen:
echo 'Bedrag uit het csv-bestand is ' . $bedrag_uit_csv_bestand . '.<br>';
echo 'Het aangepaste bedrag is ' . $bedrag_aangepast . '.';
?>
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$bedrag = '1.222,20';
$bedrag = str_replace('.', '', $bedrag);
echo number_format($bedrag, 2, ',', '');
?>
$bedrag = '1.222,20';
$bedrag = str_replace('.', '', $bedrag);
echo number_format($bedrag, 2, ',', '');
?>
Uitleg:
number_format(1, 2, 3, 4);
1 = bedrag
2 = aantal nummers achter de komma
3 = scheiding decimalen
4 = scheiding duizend tallen
Gewijzigd op 10/06/2011 01:51:46 door Marco M
Marco M op 10/06/2011 01:47:06:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$bedrag = '1.222,20';
$bedrag = str_replace('.', '', $bedrag);
echo number_format($bedrag, 2, ',', '');
?>
$bedrag = '1.222,20';
$bedrag = str_replace('.', '', $bedrag);
echo number_format($bedrag, 2, ',', '');
?>
Laatste regel moet dan zijn:
echo number_format($bedrag, 2, '.', '');
Gewijzigd op 10/06/2011 01:55:53 door Ozzie PHP
Ozzie PHP op 10/06/2011 01:55:23:
Laatste regel moet dan zijn:
echo number_format($bedrag, 2, '.', '');
Marco M op 10/06/2011 01:47:06:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$bedrag = '1.222,20';
$bedrag = str_replace('.', '', $bedrag);
echo number_format($bedrag, 2, ',', '');
?>
$bedrag = '1.222,20';
$bedrag = str_replace('.', '', $bedrag);
echo number_format($bedrag, 2, ',', '');
?>
Laatste regel moet dan zijn:
echo number_format($bedrag, 2, '.', '');
Werkt beiden niet.
Gewoon wat Ozzie reeds heeft gepost.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$bedrag_uit_csv_bestand = '1.222,20';
// Om deze 2 regels gaat het:
$bedrag_aangepast = str_replace('.', '', $bedrag_uit_csv_bestand);
$bedrag_aangepast = str_replace(',', '.', $bedrag_aangepast);
// Even testen:
echo 'Bedrag uit het csv-bestand is ' . $bedrag_uit_csv_bestand . '.<br>';
echo 'Het aangepaste bedrag is ' . $bedrag_aangepast . '.';
?>
$bedrag_uit_csv_bestand = '1.222,20';
// Om deze 2 regels gaat het:
$bedrag_aangepast = str_replace('.', '', $bedrag_uit_csv_bestand);
$bedrag_aangepast = str_replace(',', '.', $bedrag_aangepast);
// Even testen:
echo 'Bedrag uit het csv-bestand is ' . $bedrag_uit_csv_bestand . '.<br>';
echo 'Het aangepaste bedrag is ' . $bedrag_aangepast . '.';
?>
Gewijzigd op 10/06/2011 13:01:13 door - SanThe -
- SanThe - op 10/06/2011 12:38:06:
Werkt beiden niet.
Gewoon wat Ozzy reeds heeft gepost.
Gewoon wat Ozzy reeds heeft gepost.
Ik heb dit nog wel even getest en leek gewoon te werken. De komma wordt dan vervangen door een punt. Desalniettemin lijkt mijn optie mij ook de handigste.
Oeps. Kleine typo. Sorry ... Ozzy moet zijn Ozzie.
Ik vergeef het je :)
Excuses voor de komma in plaats van punt, maar behalve dat doe het precies wat het moet doen.
Marco M op 10/06/2011 22:24:09:
Excuses voor de komma in plaats van punt, maar behalve dat doe het precies wat het moet doen.
Helaas, jij rondt nu af: 1222.00 in plaats van 1222.20
Edit: Als er een komma in een getal staat zal dat getal als zijnde twee getallen worden gezien.
Gewijzigd op 10/06/2011 22:36:43 door - SanThe -
http://lmgtfy.com/?q=Php+csv
Bovenste resultaat. Gewoon INSERT in php...
Bovenste resultaat. Gewoon INSERT in php...
- SanThe - op 10/06/2011 22:35:15:
Helaas, jij rondt nu af: 1222.00 in plaats van 1222.20
Verrek, je hebt gelijk! Goed dat er nog iemand wakker is...! +1 voor SanThe :)
@Max: lees voortaan eerst even de beginpost GOED door voordat je zomaar iets gaat posten wat niks met de vraag te maken heeft ;-) (en INSERTen doe je niet in PHP maar in MySQL)
Gewijzigd op 11/06/2011 00:37:38 door Ozzie PHP