04. januar 2006 - 14:18
Der er
18 kommentarer og 1 løsning
Validering af textarea
Hejsa, Hvordan forhindre jeg følgende: - Ord der er længere end 30 char. - Text der fylder mere end 5 linier.
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
04. januar 2006 - 14:53
#1
til den første "kun 30 tegn i et ord", ville jeg bruge: <? $word = explode(" ", $_POST['text']); $count = count($word); for($i = 0; $i <= $count; $i++) { if(strlen($word[$i]) >= 30) { echo "Word #" . $i . " is larger than 30 chars\n<br />"; } } ?> Men med den anden ved jeg ikke..
04. januar 2006 - 15:08
#2
Nummer 2 bliver jo ret svær, for mere end 5 linier hvor? I dit textarea der er pixel-defineret eller i dit udskrift som egentlig kommer an på hvilken tekststørrelse bruger har i sin browser.
Slettet bruger
04. januar 2006 - 15:11
#3
<?php // Config $maxLineBreaks = 5; $maxWordLength = 30; $testString = "String der skal testes"; // RegExps $patternLinebreaks = sprintf("/(.*(\\r)?\\n){%d}/m", $maxLineBreaks + 1); $patternWordLength = sprintf("/[\\S.,\\-]{%d}/m", $maxWordLength + 1); // Test if (preg_match_all($patternLinebreaks, $testString, $m) > 0 || preg_match_all($patternWordLength, $testString, $m) > 0) { echo "Overholder ikke kravene."; } ?>
Slettet bruger
04. januar 2006 - 15:11
#4
Er dog testet, så der tages forbehold for fejl :-)
Slettet bruger
04. januar 2006 - 15:11
#5
testet = Utestet ;-)
04. januar 2006 - 15:19
#6
kan man lave det, så der ikke kan skrives mere end 5 linier, direkte i textarea feltet (sammen med overstående kode)?
Slettet bruger
04. januar 2006 - 15:21
#7
Ja, men så skal du over i JavaScrpt kategorien.
04. januar 2006 - 15:37
#8
Det vil jeg prøve. Den første kode (max word length) virker ikke - det der ud til at den ligger alle ordene sammen, hvilken er forkert. Vil forhindre "ord" som "adsasdgdfdfjkdfjsdlkfjlkajdlsakdjaslkdjadjasdlkjdlkflflkj"
04. januar 2006 - 16:32
#9
gartzen: Den poster ikke nogen fejl (gælder begge) // Check if description has more than 5 rows and words above 30 chars // Config $maxLineBreaks = 5; $maxWordLength = 30; // RegExps $patternLinebreaks = sprintf("/(.*(\\r)?\\n){%d}/m", $maxLineBreaks + 1); $patternWordLength = sprintf("/[\\S.,\\-]{%d}/m", $maxWordLength + 1); // Test if (preg_match_all($patternLinebreaks, $description, $m) > 0 || preg_match_all($patternWordLength, $description, $m) > 0) { // Post error message $status = 67; include "/home/savemov/include/status_error.php"; exit(); }
04. januar 2006 - 17:20
#10
kgp43, min tager nemig højde for de ting, den kigger hver ord igennem og tjekker det for fejl..
04. januar 2006 - 17:29
#11
nizo: det kommer ikke med fejl, hvis et ord fylder mere end 30 tegn.
04. januar 2006 - 18:05
#12
Saa gør du noget forkert, for scriptet er testet.
04. januar 2006 - 18:06
#13
Det skal jo være i forbindelse med en POST forsendelse i browseren..
04. januar 2006 - 18:23
#14
Har fundet fejlen (nizo). Hvis der er linieskift, så antager den at det sidste ord på forrige linie og det første ord på ny line er det samme (eller sådan noget). sssssssssssssssssssss (21 chars) ffffffffff (10 chars) = ét ord på 31 chars (i følge dit script).
04. januar 2006 - 18:29
#15
det er fordi at linieskiftene fylder nogle tegn. hvis du kan få det "liniskift-tælle" script til at virke, så burde dette bruges: // Check if a word is more than 30 chars + row chars (\r \n) $words = explode(" ", $description); $count = count($words); for($i = 0; $i <= $count; $i++) { if(strlen($words[$i]) >= (30 + ($patternLinebreaks*2))) { // Post error message $status = 66; include "/home/savemov/include/status_error.php"; exit(); } }
04. januar 2006 - 18:29
#16
du = vi :)
04. januar 2006 - 18:39
#17
// Check if a word is more than 30 chars + row chars (\r \n) $words = explode(" ", $description); $lines = explode("\n", $description); $count = count($words); if(count($lines) >= 5) { echo "error"; } for($i = 0; $i <= $count; $i++) { if(strlen($words[$i]) >= 30) { // Post error message $status = 66; include "/home/savemov/include/status_error.php"; exit(); } }
04. januar 2006 - 20:42
#18
Har fået det til at virke. Nizo: lig et svar så er der point.
04. januar 2006 - 21:20
#19
Godt du fik det til at virke :)
Vi tilbyder markedets bedste kurser inden for webudvikling