---
title: "Validera mobilnummer"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/184447-validera-mobilnummer"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Nova"
published: "2010-08-25T08:01:37.000Z"
updated: "2010-08-25T10:50:21.000Z"
replies: 13
views: 2251
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/184447-validera-mobilnummer"
---

# Validera mobilnummer

## #1 — Nova, 2010-08-25T08:01Z

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?

Permalänk: https://www.webforum.nu/p/184447

## #2 — metalboy, 2010-08-25T08:07Z

Ta bort semikolonet på raden

```php
if (preg_match("/^07\\d{2}-\\d{6}$/", $mobilnummer));
```

Permalänk: https://www.webforum.nu/p/2249651

## #3 — StefanBergfeldt, 2010-08-25T08:11Z

Men det här kräver ju att jag skriver mitt nummer som 07XX-XXXXXX och inte som 07X-XXX XX XX som jag brukar

Permalänk: https://www.webforum.nu/p/2249652

## #4 — Nova, 2010-08-25T08:20Z

Tack metalboy nu tog jag mig ett steg längre!
Hm..
Tanken var att det ska fånga upp alla nummer som börjar på 07.

Permalänk: https://www.webforum.nu/p/2249653

## #5 — SPiN, 2010-08-25T08:33Z

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:

```php
$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.

Permalänk: https://www.webforum.nu/p/2249655

## #6 — voigtann1, 2010-08-25T08:38Z

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 -

Permalänk: https://www.webforum.nu/p/2249656

## #7 — streetrobban, 2010-08-25T08:58Z

Du kan ju spärra användaren från att ange vissa teckan i textrutan också. Med nedanstående kod kan användaren bara skriva 10 siffror i rutan.

```
<input type="text" onkeyup="if(!this.value.match(/^\d+$/)){ this.value=(this.value.match(/\d+/))?this.value.match(/\d+/):''; }"  maxlength="10">
```

Permalänk: https://www.webforum.nu/p/2249659

## #8 — StefanBergfeldt, 2010-08-25T09:12Z

Men det där bygger på javascript, och alla användare kör inte javascript, speciellt inte de som vill sabotera

Permalänk: https://www.webforum.nu/p/2249662

## #9 — SPiN, 2010-08-25T09:21Z

> **[voigtann1 skrev:](https://www.webforum.nu/p/1514760)**
>
> 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.

Men du har helt rätt i det du skriver, bra tips!

Permalänk: https://www.webforum.nu/p/2249665

## #10 — Nova, 2010-08-25T09:26Z

Spin och voigtann1, det fungerar. Men blir något konstigt när mobilnumren innehåller - (bindestreck).

//Edit:
Tillägg det blir så om man kör med \\s och inte med \\D.

Permalänk: https://www.webforum.nu/p/2249667

## #11 — streetrobban, 2010-08-25T09:26Z

> **[StefanBergfeldt skrev:](https://www.webforum.nu/p/1514766)**
>
> Men det där bygger på javascript, och alla användare kör inte javascript, speciellt inte de som vill sabotera

Det kanske stämmer, jag ville bara dela med mig av en alternativ lösning.

Permalänk: https://www.webforum.nu/p/2249668

## #12 — voigtann1, 2010-08-25T09:29Z

Dumt av mig:

```
[\s\-]+
```

kan behövas, men spin's exempel borde fungera.

Permalänk: https://www.webforum.nu/p/2249669

## #13 — Nova, 2010-08-25T09:51Z

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.

Permalänk: https://www.webforum.nu/p/2249671

## #14 — MickeA.com, 2010-08-25T10:50Z

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.

Permalänk: https://www.webforum.nu/p/2249674

---

Tråden på webben: https://www.webforum.nu/amne/php/184447-validera-mobilnummer
