[PHP] telefoon nummers filteren.. pfff

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • cappie
  • Registratie: Februari 2000
  • Laatst online: 17-05 19:09

cappie

all lowercase

Topicstarter
Ik ben op zoek naar een manier om uit een string een telefoon nummer te rippen tot aan een bepaalde tekst:

"010-3 14 71 84 of 3 14 71 85"

dit zou dus moeten worden afgekapt bij die 'of', en gestript, gefilterd aan elkaar moeten worden geplakt.

"0103147184"

Wat ik dus wil doen is de string filteren.. eerst alle spaties en streepjes d'r uit filteren, dan alles totaan het eerste character wat geen [0-9] is d'r uit halen, en dat wat dan overblijft gebruiken als nieuwe string.

Ik doe dit omdat ik een shitload aan telefoonnummers in een database heb staan, en de zooi wil filteren op troep.

Aspire to inspire before we expire | profiel | systeem


Acties:
  • 0 Henk 'm!

Verwijderd

Wat heb je zelf al geprobeerd?

Acties:
  • 0 Henk 'm!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 17-09 16:59

Johnny

ondergewaardeerde internetguru

reguliere expressies en preg_replace of str_replace zouden dit toch makkelijk kunnen oplossen?

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


Acties:
  • 0 Henk 'm!

Verwijderd

Met deze simpele reg exp krijg je in ieder geval alle cijfers terug, aan elkaar geplakt...

Perl:
1
$number =~ s/[^0-9]//g;
(in php iets met preg_replace)

Daarna met substr de eerste 10 cijfers eruithalen... Of bedoel je iets anders?

Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 22:59

chem

Reist de wereld rond

PHP:
1
2
preg_match('/^([0-9 -])+/si',$string,$matches);
echo str_replace(array(' ','-'),array(),$matches[1]);

zoiets?

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

  • cappie
  • Registratie: Februari 2000
  • Laatst online: 17-05 19:09

cappie

all lowercase

Topicstarter
BOT! het werkt.. die regular expressions moet ik nog echt wat vaker mee stoeien..

thnx chem (en de rest van de mensen)

Aspire to inspire before we expire | profiel | systeem


Acties:
  • 0 Henk 'm!

  • cappie
  • Registratie: Februari 2000
  • Laatst online: 17-05 19:09

cappie

all lowercase

Topicstarter
dit is wat ik nu gebruik:
PHP:
1
2
3
4
  preg_match("/^([0-9 -])+/si",$telephone,$matches);
  $telephone = str_replace("-","",$matches[0]);
  $telephone = str_replace(" ","",$telephone);
  $telephone = trim($telephone);

Aspire to inspire before we expire | profiel | systeem


Acties:
  • 0 Henk 'm!

Verwijderd

PHP:
1
$telephone = preg_replace("/\D/","",$telephone);

zou ook werken :)

Acties:
  • 0 Henk 'm!

  • cappie
  • Registratie: Februari 2000
  • Laatst online: 17-05 19:09

cappie

all lowercase

Topicstarter
Verwijderd schreef op 06 April 2003 @ 23:42:
PHP:
1
$telephone = preg_replace("/\D/","",$telephone);

zou ook werken :)
True.. dat werkt nog beter ook.. dit is de functie die ik nu gebruik om m'n duitse telefoonnummers door te spitten:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  function fixphonenr($number)
  {
    $number = preg_replace("/\D/","",$number);
    $number = str_replace(" ","",$number); // dit is eigenlijk overbodig
    $number = trim($number); // dit is eigenlijk ook overbodig, maargoed
   
    $sql = "SELECT areacode FROM areacodes WHERE SUBSTRING('".$number."',1,LENGTH(areacode))=areacode ORDER BY LENGTH(areacode) DESC LIMIT 1";
    $result = mysql_query($sql);
    
    while ($row = mysql_fetch_array($result))
    {
      $number_prefix = $row["areacode"];
      $number = str_replace($row["areacode"],"",$number);
      $number = $number_prefix."-".$number;
    }
    
    mysql_free_result($result);
    unset($sql);
    unset($row);
    
    return $number;
  }


Deze functie returned het complete telefoon nummer met 't streepje opnieuw geplaatst op de juiste plek. Erg netjes zo...

Nogmaal, thnx voor de hulp, guys :)

[ Voor 12% gewijzigd door cappie op 07-04-2003 01:26 ]

Aspire to inspire before we expire | profiel | systeem

Pagina: 1