[php] Isset en spatie afvangen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • We Are Borg
  • Registratie: April 2000
  • Laatst online: 18:10

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
Topicstarter
Ik ben voorzichtig begonnen met php en wil iets relatiefs simpel. Toch wilt het me niet lukken. PHP manual en search van GoT geven weinig alternatieven, dus daarom hoop ik hier een zetje te krijgen in de goede richting

Ik wil graag controleren of een invoerveld bij submit leeg is. Kortom, makkelijk daar is isset/empty voor uitgevonden.
PHP:
1
2
3
4
5
6
7
8
<?php

if (empty($_POST['straat'])) 
{
echo "vakje leeg";
}

?>
Dit werkt prima wanneer er niks wordt ingevuld. Helaas wanneer de gebruiker een paar spaties gebruikt, dan geef deze functie geen echo want dat is het invoerveld niet leeg. Dat is uiteraard niet de bedoeling :)

Een zoekactie leverde mij Dit topic. Beetje oud topic maar ongeveer mijn onderwerp. Echte oplossing wordt helaas niet geboden.

Ik heb ook het volgende geprobeerd:
PHP:
1
2
3
4
5
6
7
8
<?php

if (empty($_POST['straat']) OR ($_POST['username'] == '     '))
{
echo "vakje leeg";
}

?>
Dit werkt helaas ook niet, wat ik al had verwacht. Isset en empty geeft hetzelfde resultaat.

Na nog wat zoekwerk kwam ik de trim() functie tegen om alle spaties uit de input te halen, maar dit is niet wat ik wil bereiken. Spatie's zijn toegestaan, als de input tenminste 1 ander teken bevat. Ook is een spatie als eerste teken natuurlijk niet toegestaan.

Kortom, wat ik wil bereiken:

• Geen input alleen maar uit spaties
• Wel spaties toestaan tussen 2 tekens
• Geen spatie aan het begin van de input

Welke functie kan ik hiervoor het beste gebruiken?

Acties:
  • 0 Henk 'm!

  • DizzyWeb
  • Registratie: Februari 2001
  • Laatst online: 05-09 14:30

DizzyWeb

Ondertiteld

Kijk eens naar trim()
http://nl.php.net/trim

Acties:
  • 0 Henk 'm!

  • supakeen
  • Registratie: December 2000
  • Laatst online: 09-09 14:42
Of je voert een strlen() uit :) Anders moet je met Regular Expressions aan de gang :)
RaZoRhEaD schreef op 20 januari 2004 @ 15:30:
idd.. trim is the way to go :)
Hij heeft trim() gebruikt, je kan ook lezen.

[ Voor 121% gewijzigd door supakeen op 20-01-2004 15:31 ]


Acties:
  • 0 Henk 'm!

  • stfn345
  • Registratie: Januari 2000
  • Laatst online: 17:59
idd.. trim is the way to go :)

Acties:
  • 0 Henk 'm!

  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 25-10-2022

Banpei

Hachiroku on this touge?

Toch de trim. Binnen de check de trim gebruiken, maar de orginele waarde natuurlijk niet overschrijven:

PHP:
1
2
3
4
if (empty(trim($_POST['straat'])))
{ 
echo "vakje leeg"; 
}

AE86 gevonden! | So what I thought I'd do was, I'd pretend to be one of those deaf-mutes.


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

trim haalt alleen spaties aan de voorkant en de achterkant weg. Als je deze alleen wilt weghalen voor het testen kun je toch gewoon OR (trim($_POST['username']) == '') gebruiken? Om te kijken of iets begint met een spatie hoef je natuurlijk alleen te kijken of het eerste teken een spatie is.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

• Spaties aan de begin of einde van de string kan je inderdaad trimmen
• Alleen spaties of andere whitespace-characters:
PHP:
1
preg_match('/^\s+$/',$_POST['username']); // oid
edit:
Janoz: inderdaad :P

[ Voor 15% gewijzigd door RedRose op 20-01-2004 15:40 ]

Sundown Circus


Acties:
  • 0 Henk 'm!

  • supakeen
  • Registratie: December 2000
  • Laatst online: 09-09 14:42
Om af te vangen of het eerste teken een spatie is kun je checken of $var[ 0 ] een spatie is :D $var[ 0 ] is dus het eerste teken in de variabele. Zo kun je een hele variabele langslopen dus nu moet je het op kunnen lossen :)

Acties:
  • 0 Henk 'm!

  • We Are Borg
  • Registratie: April 2000
  • Laatst online: 18:10

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
Topicstarter
Janoz schreef op 20 januari 2004 @ 15:32:
trim haalt alleen spaties aan de voorkant en de achterkant weg. Als je deze alleen wilt weghalen voor het testen kun je toch gewoon OR (trim($_POST['username']) == '') gebruiken? Om te kijken of iets begint met een spatie hoef je natuurlijk alleen te kijken of het eerste teken een spatie is.
Kijk, bedankt voor het idee. De trim functie na de Isset werkt prima. Spaties worden nu afgevangen bij de input :).

Ik dacht dat de trim functie anders werkte toen ik het last in de php manual, maar het werkt dus prima.

Mijn dank iedereen :)
Pagina: 1