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