• Inloggen
  • Registreer
  • Zoeken
Dit topic
  • Overal
  • Dit topic
  • Dit forum
  • Artikelen
  • Pagina's
  • Forum
  • Downloads
  • Meer opties

ICTscripters

Dé plek voor IT

Dé plek voor IT

Aanmelden

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
    3. Onopgeloste topics
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
    3. Onopgeloste topics
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
    3. Onopgeloste topics
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Scripting & programmeren
  4. PHP + SQL

Forum

  • [Beta] Ottomaan: gratis browserspel met een echte, levende stad. Feedback gezocht!

    frio 27 oktober 2026 om 12:22
  • Port Father: beta van een browsergame in Antwerpen 1931, feedback welkom

    Jeroen.G 26 oktober 2026 om 10:33
  • Maffia Hotel: een browsergame waarin je van lobbygast naar spil van het hotel groeit

    eeyk 22 oktober 2026 om 18:43
  • Crime Club volledig herschreven vanaf nul

    frio 19 oktober 2026 om 23:57
  • Malavita (nieuwe maffia game, van 0)

    jos 19 oktober 2026 om 23:18
  • Herkent deze Notion-structuurscan echte problemen?

    Jeroen.G 19 oktober 2026 om 15:09
  • 🚀 WE ZOEKEN TESTERS! 🚀

    Servertjee 3 oktober 2026 om 10:56
  • Luchtvaartsoftware: Hoe technologie de moderne luchtvaart verandert

    saggy2829 30 september 2026 om 19:31

Marktplaats

  • [Aanbod] Stadskaart voor je browsergame: van menu naar klikbare stad, vanaf €200

    frio 29 oktober 2026 om 18:17
  • [Verkoop] G4G (Gangsters 4 Gangsters): volledige broncode, nieuw gebouwd in PHP 8.3 | € 30 per domein

    frio 27 oktober 2026 om 18:54
  • [TE KOOP] Malavita.be [Maffiaspel, gebaseerd op omicidio.nl, unieke code]

    Dpm_x 26 oktober 2026 om 00:22

check string op bedrag

  • Aaron
  • 16 februari 2019 om 23:05
  • Aaron
    Beheerder
    Berichten
    1.031
    • 16 februari 2019 om 23:05
    • #1

    Hey!

    ik ben op zoek naar een manier om een extra controle uit te voeren op mijn PHP form.
    Een klant van mij wilt zijn facturen kunnen maken via zijn website. In de velden waar hij een bedrag kan in voeren,
    is het enkel maar mogelijk om cijfers in te voeren en een "."

    Maar uiteraard wil ik daar een extra controle op uitvoeren eenmaal de POST gebeurd is.
    Het ingevoerde bedrag moet altijd 1 cijfer voor de punt hebben en max 3 erna. (of enkel 1 cijfer zonder .)

    Bijvoorbeel:
    0.525 Goed
    1 Goed
    1562.1 Goed
    100.001 goed

    1.0004 Niet goed
    1...50 niet goed

    Wie kan mij hierbij helpen?

  • Gast, wil je besparen op je domeinnamen? (ad)
  • matistop333
    Gevorderd
    Berichten
    268
    • 17 februari 2019 om 16:58
    • #2

    Ik zou dit aan de hand van een regex doen, volgensmij is deze volgens jouw eisen ^[0-9]+(\.)?[0-9]{0,3}$
    In php zou dit dan zo eruit zien:

    PHP
    if (preg_match('^[0-9]+(\.)?[0-9]{0,3}$', $STRING)) {
      //code indien juist
    }
  • FangorN
    Professional
    Artikelen
    2
    Berichten
    737
    • 17 februari 2019 om 22:28
    • #3

    Hm, bovenstaande regexp doet bijna wat je wilt.

    De volgende cases worden ten onrechte geaccepteerd:
    1.
    00.000

    Ik denk dat de volgende regexp iets nauwkeuriger is, die (beter) lijkt te doen wat je wilt:
    #^(0|[1-9][0-9]*)(\.[0-9]{1,3})?$#

    Het bedrag voor de punt mag ofwel enkel bestaan uit het cijfer nul, of bestaat uit een of meer cijfers, maar moet dan beginnen met een cijfer gelijk aan of groter dan 1.
    Indien het bedrag een punt heeft bestaat het bedrag achter deze punt uit ten minste één decimaal, en maximaal drie decimalen.

    Testjes

    PHP
    <?php
    /*
    https://www.ictscripters.com/Thread/24643-check-string-op-bedrag/
    */
    $tests = array(
        '0.522' => true,
        '1' => true,
        '1562.1' => true,
        '100.001' => true,
        '1.0004' => false,
        '1...50' => false,
        '1.' => false, // accepted with pattern #1
        '00.000' => false, // accepted with pattern #1
        '0.000' => true,
        '0.00' => true,
        '0.0' => true,
        '0' => true,
        '.05' => false,
        "1.250\n" => true, // gotcha
    );
    
    
    // #1
    $pattern = '#^[0-9]+(\.)?[0-9]{0,3}$#';
    // #2
    $pattern = '#^(0|[1-9][0-9]*)(\.[0-9]{1,3})?$#';
    
    
    foreach ($tests as $test => $expectedResult) {
        $match = preg_match($pattern, $test) === 1;
        if ($match === $expectedResult) {
            echo 'pattern '.$test.' does'.($expectedResult ? '' : ' not').' match, as expected.<br>';
        } else {
            echo '[error] pattern '.$test.' did not match expected result.<br>';
        }
    }
    ?>
    Meer tonen

    Gotchas / aandachtspunten:
    * preg_match() retourneert het cijfer 1 als het patroon matcht. Het loont dus de moeite om hier expliciet mee te vergelijken ( === 1).
    * little known fact: de modifier $ matcht ook één newline character (\n - zie de laatste case). Wellicht doe je er ook verstandig aan om het resultaat (misschien ten overvloede) nog te trimmen.

    Wat je natuurlijk ook kunt doen is het veld voor het bedrag splitsen in twee velden: een voor het deel voor de punt, en een na de punt. Op die manier wordt de controle op het numerieke gedeelte (x2) natuurlijk ook een stuk eenvoudiger en heb je minder kans op fouten tijdens invoer.

    Bewerkt 3 keer, laatst door FangorN (18 februari 2019 om 00:10).

  • Aaron
    Beheerder
    Berichten
    1.031
    • 20 februari 2019 om 09:15
    • #4

    top! Ik ga met onderstaande aan de slag!
    Ik had reeds al een javascript gevonden die enkel cijfers toeliet en een “.” Maar daar kon je meerdere plaatsten.

    Ik test dit vandaag even uit en hou jullie op de hoogte!

    Citaat van FangorN

    Hm, bovenstaande regexp doet bijna wat je wilt.

    De volgende cases worden ten onrechte geaccepteerd:
    1.
    00.000

    Ik denk dat de volgende regexp iets nauwkeuriger is, die (beter) lijkt te doen wat je wilt:
    #^(0|[1-9][0-9]*)(\.[0-9]{1,3})?$#

    Het bedrag voor de punt mag ofwel enkel bestaan uit het cijfer nul, of bestaat uit een of meer cijfers, maar moet dan beginnen met een cijfer gelijk aan of groter dan 1.
    Indien het bedrag een punt heeft bestaat het bedrag achter deze punt uit ten minste één decimaal, en maximaal drie decimalen.

    Testjes

    PHP
    <?php
    /*
    https://www.ictscripters.com/Thread/24643-check-string-op-bedrag/
    */
    $tests = array(
        '0.522' => true,
        '1' => true,
        '1562.1' => true,
        '100.001' => true,
        '1.0004' => false,
        '1...50' => false,
        '1.' => false, // accepted with pattern #1
        '00.000' => false, // accepted with pattern #1
        '0.000' => true,
        '0.00' => true,
        '0.0' => true,
        '0' => true,
        '.05' => false,
        "1.250\n" => true, // gotcha
    );
    
    
    // #1
    $pattern = '#^[0-9]+(\.)?[0-9]{0,3}$#';
    // #2
    $pattern = '#^(0|[1-9][0-9]*)(\.[0-9]{1,3})?$#';
    
    
    foreach ($tests as $test => $expectedResult) {
        $match = preg_match($pattern, $test) === 1;
        if ($match === $expectedResult) {
            echo 'pattern '.$test.' does'.($expectedResult ? '' : ' not').' match, as expected.<br>';
        } else {
            echo '[error] pattern '.$test.' did not match expected result.<br>';
        }
    }
    ?>
    Meer tonen


    Gotchas / aandachtspunten:
    * preg_match() retourneert het cijfer 1 als het patroon matcht. Het loont dus de moeite om hier expliciet mee te vergelijken ( === 1).
    * little known fact: de modifier $ matcht ook één newline character (\n - zie de laatste case). Wellicht doe je er ook verstandig aan om het resultaat (misschien ten overvloede) nog te trimmen.

    Wat je natuurlijk ook kunt doen is het veld voor het bedrag splitsen in twee velden: een voor het deel voor de punt, en een na de punt. Op die manier wordt de controle op het numerieke gedeelte (x2) natuurlijk ook een stuk eenvoudiger en heb je minder kans op fouten tijdens invoer.

    Meer tonen

Registratie

Nog geen account? Registreer je nu en word deel van onze community!

Nu registreren Aanmelden

ICT Nieuws

  • PHP waarschuwt voor twee ernstige bugs die makkelijk uit te buiten lijken

    Aaron 22 oktober 2026 om 22:19

Blogs

  • Functioneel ontwerp

    Dees 28 december 2014 om 12:38
  • Access Control List implementatie in PHP/MySQL - deel 1/2

    FangorN 28 december 2018 om 12:35
  • Access Control List implementatie in PHP/MySQL - deel 2/2

    FangorN 29 december 2018 om 12:37

Gebruikers die dit topic bekijken

  • 1 Gasten
  1. Marktplaats
  2. Design
  3. Voorwaarden
  4. Ons team
  5. Leden
  6. Geschiedenis
  7. Regels
  8. Links
  9. Privacyverklaring
  10. Contact
ICTscripters ©2005 - 2026 , goedkope hosting door DiMoWeb.com, BE0558.915.582
Sponsors: Beste kattenhotel provincie Antwerpen
Style: Nexus by cls-design
Stylename
Nexus
Manufacturer
cls-design
Licence
Commercial styles
Help
Supportforum
Visit cls-design