29. januar 2010 - 20:28
Der er
11 kommentarer og 2 løsninger
Match specifikt ord med kolon
Hej Eksperter. Jeg har fået til opgave at opdatere webshop, fra tekstfiler til dynamisk - emnet er php. Der findes en meget lang liste, hvori disse ord fremtræder typisk mere end én gang. $string = "KUNDE: KUNDE: jeg forstår ikke hvad du skriver"; $string = "KUNDE: KUNDE: KUNDE: nu siger den read error"; Disse ord KUNDE: vil jeg så gerne lige match en gang for at begrænse til ét ord. Har prøvet følgende, uden videre held. (^(KUNDE:)$} /KUNDE:/ ([\w]{5})\:(?![\w]{5}\:) Men ovenstående tager alle ord på 5 bogstaver som har kolon efterfulgt. Nogen der ved hvordan hulen jeg løser problemet? PS Jeg er meget grøn i emnet reg.exp Beklager på forhånd hvis jeg lyder ulogisk.
Annonceindlæg fra DE-CIX
Edge computing: behandling ved kilden
Edge computing revolutionerer den måde, data behandles på, ved at bringe kapacitet og ydeevne tættere på dér, hvor der er behov for det.
15. april 2025
29. januar 2010 - 21:11
#1
prøv: $string = preg_replace("/^(KUNDE: )*/", 'KUNDE: ', $string);
29. januar 2010 - 21:22
#2
Min kode ser sådan ud: $tekst = "Kunde: Kunde: har du tid"; $match = preg_replace("/^(KUNDE:)*/", "KUNDE:", $tekst); print $match; Giver følgende: Kunde: Kunde: har du tid
29. januar 2010 - 21:24
#3
Men før jeg skal replace, skal jeg vel først matche om ordet overhovedet indgår mere end én gang i teksten? Hvis true, så preg replace på ordet KUNDE: Sådan har jeg forstået det
29. januar 2010 - 21:24
#4
Den er case sensitive som den er nu. Hvis det altid er "Kunde", så ændrer du det bare til det.
29. januar 2010 - 21:27
#5
Altså match er jo som regel [a-z] eller noget i den dur, men når der indgår et kolon bliver jeg i tvivl. ([KUNDE\:])i som jeg troede virkede. Beklager spam.
29. januar 2010 - 21:44
#6
30. januar 2010 - 16:25
#7
Fandt følgende løsning: /KUNDE:/ Den matcher perfekt, men hvordan skal jeg forholde mig hvis ordet opstår mere end én gang. $str = "KUNDE: KUNDE: Det virker nu"; $str = "KUNDE: Ikke igen"; $str = "Ikke igen"; Linje 1 skal matche og replace med "KUNDE: Det virker nu" og linje 2 + 3 skal der ikke lave replace på. Jeg er ude i noget ca.. $match = preg_match("/KUNDE:/", $str, $match); if(count($match > 1)){ preg_replace .. Nogle der kan hjælpe mig lidt videre eller irettesætte mig hvis jeg er helt gal på den?
30. januar 2010 - 16:47
#8
Fandt sku en løsning vha. explode og implode, så det virker med random ord - hvis der opstår mere end ét af gangen. $str = "KUNDE: Det virker nu"; $str = "KUNDE: KUNDE: Det virker nu"; Linje 1 giver "KUNDE: Det virker nu" og linje 2 giver "KUNDE: Det virker nu" Lige præcis det jeg ville, perfekt! Læg et svar ksoren2 :-)
30. januar 2010 - 17:36
#9
Skriv et svar ksoren2 - så deler vi sku 70/30 i porten.
30. januar 2010 - 18:45
#10
En løsning ku måske også være: preg_replace('/(\w+: )\1+/', '$1', $tekst) Den fjerner gentagelser af ord efterfulgt af kolon og mellemrum.
30. januar 2010 - 19:06
#11
Virker også perfekt, læg et svar tjp
30. januar 2010 - 20:22
#12
:-)
05. februar 2010 - 14:49
#13
ksoren2 lagde aldrig et svar, så tjp og jeg deler.
Kurser inden for grundlæggende programmering