Regular Exp på nummer
4 svar · 199 visningar · startad av skyman
Testa det här:
$number = "047 - 311 311";
// Och så kollar vi
$number = preg_replace("/\s/", "", $number);
if (preg_match("/^(\d{2,4}[\/-]?)?\d{5,8}$/", $number)) {
echo "Alles Ok !";
}
Den gör ungefär samma sak.
Regexpar med preg anses ändå vara lite snabbare än ereg.
Sen är de lite annorlunda uppbyggda. I min godkänns även telefonnummer utan riktnummer. Har du krav på riktnummer så blir det så här:
if (preg_match("/^\d{2,4}[\/-]?\d{5,8}$/", $number)) {
Skillnaden ligger då i att din ereg-sats säger: Ett eller flera tecken som är siffror, följt av noll eller flera skiljetecken som får vara - eller /, följt av ett eller flera tecken som är siffror.
I min justerade sats gör jag samma sak, med den skillnaden att jag begränsar det som är före skiljetecknet till mellan 2 och fyra tecken och det som är efter till fem till åtta tecken. En skillnad till är att jag säger att det får finnas max ett skiljetecken.
Sen har jag i min kod tagit bort eventuella mellanslag före jämförelse. Vill du inte godkänna dessa i din inmatning så tar du bort denna sats:
$number = preg_replace("/\s/", "", $number);
Om det är snabbare så kör jag med det :)
Tack så mycket!