Gå til innhold

[Løst]Fjerne "....." fra string


Anbefalte innlegg

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
Videoannonse
Annonse

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 av Crowly
Lenke til kommentar
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

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
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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...