[PHP] Vorwahlen überprüfen/filter?

foryoudo

Member
25 Mai 2006
12
0
Hey,

wie kann ich Vorwahlen filtern.

Ich habe ein Eingabefeld in dieses gibt der User ein Faxnummer ein.

Er kann an
Sonderrufnummern Faxen
ins Ausland Faxen
und nach Deutschland Faxen

Sonderrufnummer hat eine anderen Preis ins Ausland ist ein andere Preis und nach Deutschland genauso.

Wie mache ich das mit dem Filter.

Die Sonderrufnummer bekomme ich noch hin sie Code.
PHP:
if (($_REQUEST['nummer']) == '0180') {
$faxprice = $price;
}

Nur weiß ich nicht wie ich das mit Deutschland machen kann! 8O
 
Wenn du RegEx nicht beherscht, helfe ich dir wohl. Kann es auch erst seit kurzem und bin noch am üben :)
Wodran erkennt man denn, was für ne Rufnummer das ist?
 
Für Sonderrufnummern:
/(^0(180|190|900))([0-9]{4,}$)/


Ob es einfacher geht, weiß ich nicht ;)
Die andern mache ich gleich, habe jetzt gerade keine Lust mehr :ugly:
 
flaschenkind schrieb:
Für Sonderrufnummern:
/(^0(180|190|900))([0-9]{4,}$)/


Ob es einfacher geht, weiß ich nicht ;)
Die andern mache ich gleich, habe jetzt gerade keine Lust mehr :ugly:

Wie kann man das eigentlich noch für Deutschland, Ausland machen?
 
Zwar ein bisschen aufwendiger und bestimmt optimierfähig, aber dafür erkennt's auch Sondernummern in der Form +49-180-12345678.
PHP:
$nummer = $_REQUEST['nummer'];
if (preg_match('~^(?:00|\+)(\d{2})~', $nummer, $match)) {
  if ($match[1]==49) {
    echo "Deutschland";
    if (preg_match('~^'.str_replace('+','\+', $match[0]).'-?(18|19|90)0~', $nummer)) {
      echo " (Sondernummer)";
    }
  } else {
    echo "Ausland";
  }
} elseif (preg_match('~^0(?:18|19|90)0~', $nummer)) {
  echo "Deutschland (Sondernummer)";
} else {
  echo "Normale Nummer";
}
 
Guten Morgen,

super Danke nur musste ich jetzt feststellen das nur 0180 nummer verwendet werden können. Wie kann ich das überprüfen und noch was es dürfen nur zahlen im eingabefeld sein keine anderen Zeichen!
 
Sprich: Die Nummer sehen immer so aus 018012345678?
PHP:
if (preg_match('~^0180\d+$~', $nummer)) {
  echo "Gültige Nummer";
}
 
tleilax schrieb:
Sprich: Die Nummer sehen immer so aus 018012345678?
PHP:
if (preg_match('~^0180\d+$~', $nummer)) {
  echo "Gültige Nummer";
}
Naja, 0190 und 0900 sind auch sonderrufnummern ;)

~^0(180|190|900)\d+$~

Das würde ich dann so machen ;)
 
Es fallen nur die 0190 und 0900 nummern weg.

PHP:
$nummer = $_REQUEST['nummer']; 
if (preg_match('~^(?:00|\+)(\d{2})~', $nummer, $match)) { 
  if ($match[1]==49) { 
    echo "Deutschland"; 
    if (preg_match('~^'.str_replace('+','\+', $match[0]).'-?(18|19|90)0~', $nummer)) { 
      echo " (Sondernummer)"; 
    } 
  } else { 
    echo "Ausland"; 
  } 
} elseif (preg_match('~^0(?:18|19|90)0~', $nummer)) { 
  echo "Deutschland (Sondernummer)"; 
} else { 
  echo "Normale Nummer"; 
}

Wie kann ich das so abändern das nur zahlen erlaubt sind?
Und Deutschland mit 0049?
Ausland und die 0180 erlaubt sind?
 
foryoudo schrieb:
Wie kann ich das so abändern das nur zahlen erlaubt sind?
mit is_numeric()

PHP:
$nummer = $_REQUEST['nummer']; 
if(is_numeric($nummer)){
  if (preg_match('~^(?:00|\+)(\d{2})~', $nummer, $match)) { 
    if ($match[1]==49) { 
      echo "Deutschland"; 
      if (preg_match('~^'.str_replace('+','\+', $match[0]).'-?(18|19|90)0~', $nummer)) { 
        echo " (Sondernummer)"; 
      } 
    } else { 
      echo "Ausland"; 
    } 
  } elseif (preg_match('~^0(?:18|19|90)0~', $nummer)) { 
    echo "Deutschland (Sondernummer)"; 
  } else { 
    echo "Normale Nummer"; 
  }
} else {
  echo "Ungültige Nummer";
}
 
So wie ich es jetzt habe kann man immer noch ein + vor der Rufnummer schreiben aber es soll aber kein + erlaubt sein.

PHP:
if(is_numeric($nummer)){ 
  if (preg_match('~^(00)(\d{2})~', $nummer, $match)) {  
    if ($match[1]==49) {  
      echo "Deutschland";  
      if (preg_match('~^0180\d+$~', $nummer)) {  
        echo " (Sondernummer)";  
      }  
    } else {  
      echo "Ausland";  
    }  
  } elseif (preg_match('~^0180\d+$~', $nummer)) {  
    echo "Deutschland (Sondernummer)";  
  } else {  
    echo "Normale Nummer";  
  } 
} else { 
  echo "Ungültige Nummer"; 
}
 
foryoudo schrieb:
So wie ich es jetzt habe kann man immer noch ein + vor der Rufnummer schreiben aber es soll aber kein + erlaubt sein.

PHP:
if(is_numeric($nummer)){ 
  if (preg_match('~^(00)(\d{2})~', $nummer, $match)) {  
    if ($match[1]==49) {  
      echo "Deutschland";  
      if (preg_match('~^0180\d+$~', $nummer)) {  
        echo " (Sondernummer)";  
      }  
    } else {  
      echo "Ausland";  
    }  
  } elseif (preg_match('~^0180\d+$~', $nummer)) {  
    echo "Deutschland (Sondernummer)";  
  } else {  
    echo "Normale Nummer";  
  } 
} else { 
  echo "Ungültige Nummer"; 
}

Dann mach aus
PHP:
if(is_numeric($nummer)){
das:
PHP:
if(is_numeric($nummer) AND !strpos($nummer, '+')){


:rtfm: