Gå til innhold

Hvordan endre komma til space og omvendt


Anbefalte innlegg

Hei!

 

Før dere ler av mitt enkle spm, la meg utdype.

Jeg har laget "stikkord" på nyhetene mine. Jeg vil ha muligheten til å kunne skrive stikkordene med mellomrom eller komma, og uansett vise stikkordene i nyheten med kommaer.

 

Så jeg gjorde dette:

 

$nyhet['tags'] = str_replace(" ", ", ", $nyhet['tags']);

 

Men om jeg da skriver med komma, blir det dobbelt opp. Hva gjør jeg?

Lenke til kommentar
Videoannonse
Annonse

Om jeg forstår deg rett så skal det om du skriver "Foo,bar,foo,bar" skal det være slik, men om du skriver "Foo bar foo bar" skal mellomrom bli erstattet med komma?

 

Da ville jeg først sjekket om det er brukt komma, hvis det ikke er brukt er det mest sannsynlig brukt mellomrom (kombinasjon er ikke lov :p )

 

<?php

// Variabel uten vanskelige tegn er fint :)
$tags = $nyhet['tags'];

// Sjekker om det finnes komma i "tags"
if (!preg_match("/,/i", $tags)) {

// Hvis det ikke finnes blir alle mellomrom erstattet med komma
$tags = str_replace(" ", ",", $tags); 

}

?>

 

Vet ikke helt om dette fungerer, men du får prøve :)

Endret av Goggen90
Lenke til kommentar

Siden du skal kunne skille stikkordene med enten mellomrom eller komma. Vil det si at ingen av stikkordene har mellomrom?

 

Pattern: ([^,])\s

Replacement: $1,

Subject: fotball, golf data

 

Da vil du få byttet ut mellomrom med komma så lenge ikke tegnet før mellomrommet er komma.

 

PHP koden blir da

preg_replace('/([^,])\s/i', '$1, ', 'fotball, golf data');

 

Men denne har noen svakheter. Jeg er ikke sikker hvor streng syntaks du krever? Hvis du tester de verdiene på http://regex.larsolavtorvik.com/ så kan du se om den er bra nok til ditt eksempel.

 

Pattern: ([^,|\s])[\s]+([^,|\s])

Replacement: $1, $2

Subject: fotball, golf data

 

preg_replace('/([^,|\s])[\s]+([^,|\s])/i', '$1, $2', 'fotball, golf data');

 

Denne koden vil støtte at folk skriver mellomrom før komma og at man skriver flere enn ett mellomrom.

 

Det finns mange måter å gjøre dette på men dette er i hvertfall to eksempler.

Endret av aCa
Lenke til kommentar
Fått det i orden nå :)

 

Men hvordan kan jeg sette link på de? At hvert ord har samme link f.eks "?s=stikkord&ord=ordet" ?

Du kunne ha benyttet deg av denne pattern: (\w)[,|\s]*

 

preg_replace('/(\w+)[,|\s]*/', '<a href="somthing.php?s=$1&ord=ordet">$1</a>, ', 'asdf, 234, sdf,sdf,');

 

Bruk substr eller noe til å fjerne siste mellomrom og komma.

 

Litt usikker hva du mente med ordet i linken din, så gi meg beskjed hvis dette ikke løser problemet ditt.

 

Edit: glemte en + tegn.

Endret av aCa
Lenke til kommentar
Nei at "ordet" blir stikkordet da.. Så si dette:

 

hei, bob, arne

 

så blir det

 

link=hei, link=bob, link=arne

 

U see? :)

Tror det er sent på kvelden fordi jeg skjønte faktisk ikke den :-)

 

Men fungerte den koden jeg ga deg så lenge du byttet litt på innholdet av href til slik du ville ha det? ;-)

Lenke til kommentar
  • 2 uker senere...

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å
×
×
  • Opprett ny...