04. februar 2003 - 06:35Der er
9 kommentarer og 1 løsning
Store/små bogstavsfunktion
For at undgå at brugere kan skrive en tekst som for eksempel HJÆÆÆLP ønsker jeg at lave en funktion som tjekker tekststrengen igennem. Jeg har indtil nu fået mixet en lille expression sammen, men den virker ikke helt efter hensigten.
if (! empty ($_REQUEST['tekst'])) { $tekst = $_REQUEST['tekst'];
if (ereg ("^[[:alnum:]]+$" , $tekst)) // hvis tekst kun indeholder alfa eller tal { if (! ereg ("[A-ZÆØÅ]{2}" , $tekst)) { echo "<div align=\"center\">Funktionstest kører...</div>"; }
Brugere må nemlig gerne for eksempel skrive Jens Børge Sørensen, men det forhindres sådan som det er nu. Hvordan kan jeg lave et expression som også indkluderer dette.
Ja Ja = expression true. JA ja = expression false. jAA Ja = expression false. JaAja = expression true.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Jeg er på vej i seng så kan ikke teste lige nu, men det ser fornuftig ud at dele tekststrengen op. $tekst indeholder iøvrigt kun navne eller emne titler, så det drejer sig kun om forholdsvis små datas.
Et lille tillægsspørgsmål. Vil det være bedst at køre expression før eller efter man putter data ind i en database ?
for($i = 0; $i < count($tekst); $i++) { if (ereg ("[A-ZÆØÅ]{2}" , $tekst[$i]) && !in_array($tekst[$i], $undtagelser)) { // Er der 2 eller flere store bogstaver efter hinanden?
$smaa_bogstaver = strtolower(substr($tekst[$i], 1)); // Laver alle bogstaver undtaget start til små. $startbogstav = substr($tekst[$i], 0, 1); // startbogstav må gerne være Stort i alle ord. $tekst[$i] = $startbogstav . $smaa_bogstaver; $retur_tekst .= $tekst[$i] . " "; } else { $retur_tekst .= $tekst[$i] . " "; } } return trim($retur_tekst); // fjerner det sidste mellemrum og returnerer den rettede tekst. }
echo ret_store_bogstaver("PHP kan levere et OUtput FormatteREt som HTML"); ?> //sostack
Goodie, yderst fin og brugbar funktion du har fået lavet sostack :) Spørgsmålet er dog om det virkelig er nødvendig det jeg fiskede efter, om det ikke ville være meget nemmere at tjekke $streng for uppercase, og hvis ja så køre en ucfirst() funktion. Omkring mit lille tillægsspørgsmål, aner ikke hvorfor eller hvordan jeg kunne spørge om noget så dumt, men tror jeg har fået forvekslet noget da jeg var på vej i seng. Hvis man forestillede sig at man skulle køre function ret_store_bogstaver ($teksten) på alle overskrifter fra en database til et forum, ville det jo tage alt for langt tid ;) Anyway prøver lige noget, og vender så tilbage efter aftensmad og lukker.
Grunden til jeg ikke bruger ucfirst() er, at ord der er skrevet som "oRDet" jo ikke skal rettes til "Ordet", men til "ordet". Det kan ucfirst ikke tage højde for uden en masse udenomssnak. //sostack
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.