Jag försöker att validera att det är ett mobilnummer och om det är det ska det göra en sak och om det inte är det ska det inget göra.
$mobilnummer = $db_ary['customers_telephone'];
if (preg_match("/^07\\d{2}-\\d{6}$/", $mobilnummer)); // Hur man nu skiver detta :$
{ echo $mobilnummer; }
else{
}
Skriver jag så här får jag ett felmeddelande att det är Parse error: syntax error, unexpected T_ELSE
Hur gör jag enklast?
Som Stefan säger är du tvungen att skriva in ditt telefonnummer i just formatet 07XX-XXXXXX för att din kod ska fungera. Ett bättre alternativ är att ta bort alla "ogiltiga" tecken och sedan göra en matchning. Ett exempel:
$number = preg_replace("/\D/", '', $db_ary['customers_telephone']);
if (preg_match('/^07\d{8}$/', $number)) {
echo "Match!";
} else {
echo "No match.";
}
Nu kommer matchningen ske mot ett 10 tecken långt telefonnummer, oavsett tidigare format. Tänk dock på att "bogus-nummer" som t.ex. "jioi0mc792jkn -98k nfnn 8723,oje " kommer att returnera en match, då ogiltiga tecken raderas från strängen innan matchningen sker.
istället för \D så kan du köra [\s-]+ så kommer den inte validera på "jioi0mc792jkn -98k nfnn 8723,oje " men: " 07 0 1 2 3 4 5 6 7 0" då den ersätter bara mellanslag och -
istället för \D så kan du köra [\s-]+ så kommer den inte validera på "jioi0mc792jkn -98k nfnn 8723,oje " men: " 07 0 1 2 3 4 5 6 7 0" då den ersätter bara mellanslag och -
Det är helt riktigt, men jag använde \D som en "feature" - alltså att man faktiskt vill ta bort icke numeriska tecken! Men jag förstår självklart att man kanske inte alltid vill det, då är din lösning att föredra. Man kan ju utveckla det ännu mer, t.ex. att tillåta '+46' istället för första nollan (räcker iofs med en replace), o.s.v.
Det blir något tokigt när jag ska skriva ut resultaten och telefonnummret innehåller (innehöll) - (bindestreck) eller mellanslag.
Edit:Det går bra att skriva ut alla mobilnummer som ej är "städade" och första "städade" alla efter det "städade" blir det tokigt med.
Jag har kört liknande "fullösningar" som ditt ovan, men har du ett större system kommer det falla förr eller senare.
Jag gjorde så att jag gjorde om och delade upp i tre fält: Landskod, Riktnummer, Nummer och sen sparar jag alla nummer i formatet 46-70-1234567.
Alla användare blev sedan tvingade att ändra sitt nummer enligt min nya modell och nu har jag allt i ett format man kan göra vad man vill med och allt ser likadant ut.
Skulle överväga att göra likadant om jag vore du.
253 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25