Toon posts:

[php] cijfers uit string filteren

Pagina: 1
Acties:
  • 186 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik zoek me eigen al de hele ochtend de *piep* maar ik kom er niet uit. Ik heb wel het een en ander gevonden over filteren, maar niet echt met cijfers specifiek.

Weet iemand hoe ik bijvoorbeeld de cijfers uit deze string kan halen:

<b>e7UGHJ45</b>

Dit is maar een voorbeeldje, maar ik zou er dan uiteindelijk <b>745</b> uit moeten halen, dus alleen de cijfers. Ik zat zelf te denken aan een loopje, of iets met FOR. Maar precies weet ik het niet... Als iemand een schemaatje weet!?

  • goalgetter
  • Registratie: Juni 1999
  • Laatst online: 25-08 15:24
Neem eens een kijkje bij de regular expressions afdeling.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

$output = preg_replace('/\D/', '', $input);

zoiets?
De rest moet je er met de manual's zelf wel bij kunnen bedenken, als er iets nog niet klopt :)

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 13:44
Een paar mogelijkheden:

1. De string karakter voor karakter doorlopen en alle karakters die getallen zijn eruit halen (en achter elkaar zetten).

2. De string opsplitsen op alle series van niet-getallen, zodat je een lijstje met series van getallen overhoudt, die je weer achter elkaar kunt zetten.

3. Alle niet-getallen door lege strings vervangen.

Verder:
http://www.php.net/

Succes!

(Ik zou in PHP voor optie 3 gaan trouwens.)

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op dinsdag 21 mei 2002 12:16 schreef Soultaker het volgende:
<ot>
:*
</ot>

Doet iets met Cloud (MS/IBM)


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op dinsdag 21 mei 2002 12:16 schreef Soultaker het volgende:
(Ik zou in PHP voor optie 3 gaan trouwens.)
Mijn idee idd ook :)
De andere opties zou ik iig alleen naar kijken als je de extra functionaliteit verder ook nodig hebt.

Soultaker: het viel mij (en D2k) op dat je (de laatste tijd) alleen nog maar een welkome (behulpzaam, etc) user bent :)
Waar ik je een paar weken geleden op aansprak heb ik niets meer van gezien (en viel toen ook eigenlijk wel mee) en omdat ik toen publiek tegen je uitviel geef ik je nu ook publiek een compliment :)

Verwijderd

Topicstarter
Op dinsdag 21 mei 2002 12:16 schreef Soultaker het volgende:
Een paar mogelijkheden:

1. De string karakter voor karakter doorlopen en alle karakters die getallen zijn eruit halen (en achter elkaar zetten).
Dit lijkt me in mijn geval het beste, maar heb je een idee van een schema? Ik zoek uiteraard zelf de code er wel bij, want ik weet nog wel een beetje hoe het werkt hoor mensen...

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

strlen opvragen en dan met een forlus elk karakter op isint() controleren?

Doet iets met Cloud (MS/IBM)


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op dinsdag 21 mei 2002 12:21 schreef ivy het volgende:
Optie 1 lijkt me in mijn geval het beste, maar heb je een idee van een schema?
Als je puur en alleen "de getallen uit die string" wilt hebben kan je denk ik beter voor optie 3 gaan.

Als je liever de getallen in een array hebt, oid, is optie 1 een idee.

Verwijderd

Topicstarter
Op dinsdag 21 mei 2002 12:23 schreef ACM het volgende:

[..]

Als je puur en alleen "de getallen uit die string" wilt hebben kan je denk ik beter voor optie 3 gaan.

Als je liever de getallen in een array hebt, oid, is optie 1 een idee.
Ja je hebt denk ik wel gelijk (achteraf :) ) maar kan jij me helpen met een schemaatje + evt. fucntienamen? Want ik om er niet echt uit.

Ik dacht dat het zoiets zou worden als dit:
code:
1
2
3
4
5
6
7
getal = "";

if (char == (1-9){
getal = getal+char
} else {
goto next char and loop 
}

?

(klopt niks van uiteraard, maar het gaat om het idee)

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op dinsdag 21 mei 2002 12:29 schreef ivy het volgende:
maar kan jij me helpen met een schemaatje + evt. fucntienamen?
Op dinsdag 21 mei 2002 12:15 schreef ACM het volgende:
$output = preg_replace('/\D/', '', $input);

zoiets?
De rest moet je er met de manual's zelf wel bij kunnen bedenken, als er iets nog niet klopt :)
Dat doet 'ongeveer' optie 3 :)
Kan zijn dat de meegegeven regexp niet helemaal perfect is, maar na het lezen van de php-manual moet dat wel lukken denk ik ? :)

  • vinnux
  • Registratie: Maart 2001
  • Niet online
Nou ik doe het door te splitten op reeksen niet digits en die stukken in een array te zetten. Dit is de php code :
PHP:
1
<?$parts = split('[^[:digit:]]+',$string);?>

Waneer $string = "cewjhc778jkhnk76ee" dan $parts[0] = 778 en $parts[1] = 76

Als je nou weer wilt dat het één string wordt doe je $everything = implode($parts);

  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 19-08 19:06
Als je het op één regel wilt hebben, pak je òf ACM's mogelijkheid, òf deze:

$alleencijfers = ereg_replace ("[^0-9]", "", $cijfersenletters);

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 07-08 19:18

killercow

eth0

Op dinsdag 21 mei 2002 12:23 schreef D2k het volgende:
strlen opvragen en dan met een forlus elk karakter op isint() controleren?
is_numeric dan he want isint werk alleen op echte intergers, is_numeric kan ook in strings etc kijken en dat is hier dus de bedoeling.

openkat.nl al gezien?


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 13:45
Limhes:
Als je het op één regel wilt hebben, pak je òf ACM's mogelijkheid, òf deze:

$alleencijfers = ereg_replace ("[^0-9]", "", $cijfersenletters);
Waarbij moet worden opgemerkt dat die van ACM beter is omdat Perl Regexes sneller zijn dan niet-Perl Regexes >:).

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 13:45
killercow:
is_numeric dan he want isint werk alleen op echte intergers, is_numeric kan ook in strings etc kijken en dat is hier dus de bedoeling.
Ook leuke oplossing, probeer dit eens:
code:
1
echo is_numeric("10e5");

>:)

Verwijderd

Pagina: 1