07. juli 2006 - 10:45
Der er
11 kommentarer
stort bogstav efter punktum
Har søgt lidt rundt, men kan ikke finde en metode til at formattere en tekst så den bliver læsevenlig. Altså stort begyndelses bogstav, og stort bogstav efter punktum - resten lowercase. Det første er nemt: $text = ucfirst(strtolower($txt)); Men derefter skal man formentlig ud i noget reg exp, og det er ikke min stærke side. Nogle der har en løsning?
Annonceindlæg fra SoftwareOne
Undskylder ... varmen er åbentbart gået mig til hovedet. Du nævner jo selv ucfirst().
Du behøver dog ikke at kalde strtolower() før at du kalder ucfirst().
Mht. navne og lignende, er det ikke et problem til denne løsning (der er lidt speciel). Det vigtigste er læsevenligheden. Du har ret, jeg undlader dobbeltkonfekten :)
Det nærmeste må vel være: $txt = explode(". ", $txt); foreach($txt as $string) $txt2[] = ucfirst(strtolower($string)); $txt = implode(". ", $txt2); Men har du ikke et eksempel på noget tekst?
Ja, det er derhenad. Eksempel: --------------------------------- Lorem ipsum Dolor sit amet, consectetur adipiSicing elit, sed do EIUSMOD tempor incididunt ut labore et dolore magna aliqua. ut enim ad Minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea COMMODO consequat. --------------------------------- Reglerne må være: Første tegn i string skal være stort (ucfirst) alt efter ". " skal være stort første bogstav efter linieskift skal være stort (\r\n)
Har løst det på denne måde: ------------------------- $text = ucfirst(strtolower($txt)); $t1 = explode(". ", $text); foreach($t1 as $string1) $txt1[] = ucfirst($string1); $t1final = implode(". ", $txt1); $t2 = explode("\r\n", $t1final); foreach($t2 as $string2) $txt2[] = ucfirst($string2); $t2final = implode("\r\n", $txt2); $t3 = explode("? ", $t2final); foreach($t3 as $string3) $txt3[] = ucfirst($string3); $t3final = implode("? ", $txt3); -------------------- iss, du må gerne smide et svar for hjælpen.
Husk nu at fjerne kaldet til strtolower() :^) Iøvrigt er der ikke brug for at køre en eksplicit ucfirst på strengen til at starte med. Den bliver jo også håndteret i løkken lige nedenunder. Du kan altså nøjes med: $t1 = explode(". ", $text); foreach($t1 as $string1) $txt1[] = ucfirst($string1); $t1final = implode(". ", $txt1); $t2 = explode("\r\n", $t1final); foreach($t2 as $string2) $txt2[] = ucfirst($string2); $t2final = implode("\r\n", $txt2); $t3 = explode("? ", $t2final); foreach($t3 as $string3) $txt3[] = ucfirst($string3); $t3final = implode("? ", $txt3);
Jep, det gik lidt stærkt :)
07. juli 2006 - 17:03
#10
Hvad med: $txt = "blah. something? right on"; echo preg_replace_callback("/(\. |\? |\n\r|^)([a-zæøå]+)\b/", create_function('$regs','return $regs[1] . ucfirst($regs[2]);'), $txt); :-) Lidt alternativt, men det burde virke fint.
07. juli 2006 - 17:08
#11
ups... fjern lige det \b i regex'en.
Vi tilbyder markedets bedste kurser inden for webudvikling