Petter89 Skrevet 3. juni 2009 Del Skrevet 3. juni 2009 Hei, jeg har flere strenger med eksempelvis innhold: "nyhet 1........." "blablabla..." "Hurra for 17. mai..............." Altså kan dere se at det er alt for mange punktum etter nyheten. Jeg vil fjerne de siste punktumene (prikk prikk prikk) slik at det bare er ett punktum og blir seende ut slik: "nyhet 1." "blablabla." "Hurra for 17. mai." Det som er problemet er at antall punktum varierer fra streng til streng. Har noen et forslag til løsning? Lenke til kommentar
Crowly Skrevet 3. juni 2009 Del Skrevet 3. juni 2009 (endret) f. eks $streng='test.....'; $temp=str_replace('.','',$streng).'.'; echo $temp; Svakheten her er at den vil fjerne alle punktum i $streng. Slik at "Test. Test. Test......" blir "Test Test Test." En litt bedre metode vil nok være å se etter første forekomst av '..', om det er flere enn to punktum på slutten spiller liten rolle, da de blir droppet uannsett. $streng='Test. Test. Test. Test.....'; $pos=strpos($streng,'..'); $temp=substr($streng,0,$pos+1); // legger på +1 for å få med ett punktum på slutten echo $temp; Endret 3. juni 2009 av Crowly Lenke til kommentar
Petter89 Skrevet 3. juni 2009 Forfatter Del Skrevet 3. juni 2009 f. eks $streng='test.....'; $temp=str_replace('.','',$streng).'.'; echo $temp; Svakheten her er at den vil fjerne alle punktum i $streng. Slik at "Test. Test. Test......" blir "Test Test Test." En litt bedre metode vil nok være å se etter første forekomst av '..', om det er flere enn to punktum på slutten spiller liten rolle, da de blir droppet uannsett. $streng='Test. Test. Test. Test.....'; $pos=strpos($streng,'..'); $temp=substr($streng,0,$pos+1); // legger på +1 for å få med ett punktum på slutten echo $temp; Takk for svar, men nå er det slik at hvis strengen ikke har et punktum etter seg, så kommer det en blank output. Kan du tenke deg til feilen? Lenke til kommentar
JcV Skrevet 3. juni 2009 Del Skrevet 3. juni 2009 Jeg hadde kjørt en løkke på strengen $string = "Test.. Test..."; while(strpos($string, "..")){ $string = str_replace("..", ".", $string); } På denne måten vil man gå igjennom strenger flere ganger og hele tiden minke antall . med en helt til det bare er en igjen. Lenke til kommentar
Ernie Skrevet 3. juni 2009 Del Skrevet 3. juni 2009 Takk for svar, men nå er det slik at hvis strengen ikke har et punktum etter seg, så kommer det en blank output.Kan du tenke deg til feilen? Det har nok noe med at strpos ikke finner noen punktum og derfor returnerer false. Derfor bør det være $streng='Test. Test. Test. Test.....'; if ($pos=strpos($streng,'..')) { $temp=substr($streng,0,$pos+1); // legger på +1 for å få med ett punktum på slutten } echo $temp; Dog har jeg et litt bedre forslag lengre ned. Jeg hadde kjørt en løkke på strengen $string = "Test.. Test..."; while(strpos($string, "..")){ $string = str_replace("..", ".", $string); } På denne måten vil man gå igjennom strenger flere ganger og hele tiden minke antall . med en helt til det bare er en igjen. En lite pen løsning i og med at dette enkelt kan løses med et regulært uttrykk. $string = "Test.. Test..."; $string = preg_replace('#(\.{2,})#', '.', $string); Lenke til kommentar
Petter89 Skrevet 4. juni 2009 Forfatter Del Skrevet 4. juni 2009 Takk, ernie. Da markerer jeg denne som løst. /P Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå