Toon posts:

[php] nummer uit nummerreeks verwijderen

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik heb bijv deze waarde:
$nummers="123,456,789,122,455,788,900";
en ik wil dit nummer eruit hebben:
$welke="789";

nu doe ik
$new_data = str_replace($welke.",","",$nummers);

dit gaat 9 van de 10x goed, maar soms dus niet....

hoe kan dit?? en is er een andere/betere manier om deze handeling uit te voeren?

  • Neman
  • Registratie: September 2000
  • Laatst online: 30-08 12:47

Neman

Een uit de lucht gegrepen naam

Als $welke achteraan staat, dan gaat het natuurlijk fout (omdat er geen komma achter staat). Beter is het een regex te gebruiken, die de komma als optioneel beschouwt. Probeer zoiets:
code:
1
$new_data = ereg_replace("(([0-9]+[,]?)*)(($welke)[,]?)(([0-9]+[,]?)*)", "\\1\\5", $nummers);

edit:

Getest :).

Verwijderd

Topicstarter
Op donderdag 07 maart 2002 01:42 schreef Neman het volgende:
Als $welke achteraan staat, dan gaat het natuurlijk fout (omdat er geen komma achter staat). Beter is het een regex te gebruiken, die de komma als optioneel beschouwt. Probeer zoiets:
code:
1
$new_data = ereg_replace("(([0-9]+[,]?)*)(($welke)[,]?)(([0-9]+[,]?)*)", "\\1\\5", $nummers);

edit:

Getest :).
ohja.. foutje in m'n voorbeeld, maarre aan het eind hoort wel een ","

maarre ik zal je code ff testen..

het probleem met de oude code is dat hij soms alleen de "," (komma) weghaald, en niet het nummer.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

en wat doe je als je een nummer '12335' hebt...

En '123' vervangt? ;)
Misschien is het handiger om dit te doen:
PHP:
1
<?$array = split(",", $nummers);foreach(array_keys($array, $welke) as $key){    unset($array[$key]);}$nummers = implode(",", $array);?>

Oid, daar zijn nog talloze varianten op te bedenken.

Verwijderd

Topicstarter
Op donderdag 07 maart 2002 08:21 schreef ACM het volgende:
en wat doe je als je een nummer '12335' hebt...

En '123' vervangt? ;)
Misschien is het handiger om dit te doen:
PHP:
1
<?$array = split(",", $nummers);foreach(array_keys($array, $welke) as $key){    unset($array[$key]);}$nummers = implode(",", $array);?>

Oid, daar zijn nog talloze varianten op te bedenken.
door die , (komma) herkent ie dus het verschil tussen 123 en 12335

want "123," != "12335,";

maarre die "oplossing" van jou, ga ik proberen, zo te zien zal dat wel werken. :D

Verwijderd

en als je nou iets hebt als 234234123, ?
:)

Verwijderd

Topicstarter
Op zaterdag 09 maart 2002 17:14 schreef zellufs het volgende:
en als je nou iets hebt als 234234123, ?
:)
ja je hebt gelijk, dat was dus ook het probleem waarom ie het 1 op de 10 x niet goed deed....

ik kon het probleem alleen niet vinden..

|:(

Verwijderd

je had verder natuurlijk ook nog
PHP:
1
<?$string = ",".$string;$string = str_replace(",".$welke.",",",",$string); ?>



kunnen doen ofzow... maar zo ist mooier idd...

Verwijderd

Gebruik gewoon acm zen manier, want die rockeert zwaar.. zo die ik het ook altijd

Verwijderd

Topicstarter
Op zaterdag 09 maart 2002 18:09 schreef zellufs het volgende:
je had verder natuurlijk ook nog
PHP:
1
<?$string = ",".$string;$string = str_replace(",".$welke.",",",",$string); ?>



kunnen doen ofzow... maar zo ist mooier idd...
als je de de eerst van de reeks moet hebben dan werkt het niet.
aangezien de eerste geen , (komma) ervoor heeft.

edit:
lama, ik zie al dat je de komma ervoor hebt gezet. :)


chem z'n oplossing = 8-)

Verwijderd

$string = ",".$string;
dan lees jij mijn post niet goed :) ik zei ook al dat die andere oplossing mooier was, dit was alleen nóg een optie :P

edit:
tissal goed :)

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zaterdag 09 maart 2002 18:32 schreef ludohelder het volgende:
chem z'n oplossing = 8-)
Waar zie jij chem een oplossing geven? :)

  • tomato
  • Registratie: November 1999
  • Niet online
ACM: Waar zie jij chem een oplossing geven? :)
* tomato vond het ook al erg vreemd klinken en het blijkt dus ook inderdaad niet zo te zijn :P

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

D2k

Op zaterdag 09 maart 2002 18:49 schreef tomato het volgende:
* tomato vond het ook al erg vreemd klinken en het blijkt dus ook inderdaad niet zo te zijn :P
ik heb het topic ook al uit 6 hoeken bekeken :P
maar ook geen chem kunnen ontdekken

Doet iets met Cloud (MS/IBM)


Verwijderd

Topicstarter
ik heb nog een beetje last van een hersenschudding van 6 weken gelden, maarre ik bedoelde dus ACM i.p.v. chem |:(

  • tomato
  • Registratie: November 1999
  • Niet online
ludohelder: ik heb nog een beetje last van een hersenschudding van 6 weken gelden, maarre ik bedoelde dus ACM i.p.v. chem |:(
Het zou ook te mooi zijn he >:)

Ok, genoeg over chem ;)

Verwijderd

Topicstarter
Op donderdag 07 maart 2002 08:21 schreef ACM het volgende:
en wat doe je als je een nummer '12335' hebt...

En '123' vervangt? ;)
Misschien is het handiger om dit te doen:
PHP:
1
<?$array = split(",", $nummers);foreach(array_keys($array, $welke) as $key){    unset($array[$key]);}$nummers = implode(",", $array);?>

Oid, daar zijn nog talloze varianten op te bedenken.
okeee, probleem!!! :(

om hier even op terug te komen,
na een week deze oplossing te hebben gebruikt, krijg ik allemaal variablen zoals dit:

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,123,4565,65465,654,654,654,67

en dat is niet de bedoeling, hoe los ik dit op?
ik d8 dat unset() het hele element uit de array verwijderde, maar hij leegt alleen de waarde van het element
Pagina: 1