Hej på er,
Jag sitter och snickrar på ett anmälningsformulär och där har jag tänkt att stoppa felaktigheter med hjälp av preg_match.
Nu har jag letat en bra stund efter en lösning som ger rätt till ett blanksteg mellan namndelar men inte rätt till att göra fler än ett blanksteg. Som det är nu släpper den igenom ett blanksteg men även flera i rad, vilket ger möjlighet att fylla i formuläret med endast blanksteg = fel.
Min kod ser ut så här just nu:
if ($_POST['company']== '' || !preg_match('/^[a-zåäö\' ]{3,}$/i', $_POST['company'])) {
Hur löser man detta? Kan någon sedan förklara delarna ^ och $ för mig så blir det bonus för det.
/webb
aasahMedlem sedan mars 20034 471 inlägg
webbmannen skrev:
Hur löser man detta? Kan någon sedan förklara delarna ^ och $ för mig så blir det bonus för det.
^ först i uttrycket betyder att uttrycket börjar här.
$ betyder att uttrycket slutar här.
Exempel /^anna$/ matchar bara anna medan /anna$/ även matchar panna, skanna, .... och /anna/ även matchar annat, skannade, et c....
Jag hade löst ditt problem med två matchningar
if ($_POST['company']== '' ||
!preg_match('/^[a-zåäö \' ]{3,}$/i', $_POST['company'] ||
preg_match('/[ ]{2,}/i', $_POST['company'] )
Dvs tillåt mellanslag men kolla att man inte har fler än en i följd någonstans i uttrycket med nytt preg_match.
Alternativt, om du bara vill stoppa endast mellanslag men inte har något att invända mot
"a<5 mellanslag>b" så kan du göra så här:
$_POST['company'] = trim($_POST['company']);
if ($_POST['company']== '' ||
!preg_match('/^[a-zåäö \' ]{3,}$/i', $_POST['company'])
trim tar bort whitespace (blanka, tab och dylikt) först och sist i uttrycket.
Hej och tack aasah,
Dina lösningar funkar bra och jag har nu lite bättre kläm på detta. Samtidigt så har jag med lite distans till problematiken insett att man kan hålla på med dessa styrningar in i absurdum. Lagom är nog bäst ;)
/webb