Avatar billede musiat Nybegynder
21. januar 2003 - 20:37 Der er 19 kommentarer og
1 løsning

Limit på længde af et ord, sidste version og undgå brug af tags

Jeg har tre spørgsmål:

1)Hvordan sætter man en limit på længden af et indtastet ord i et <textarea>, så man undgår at en bruger ødelægger ens design?

2)Findes der en kode som gør, at brugeren altid vil få den seneste version af mit website? (Bare til Explorer)

3)Kan man undgå at skulle bruge html-tags, som fx. br i et textarea, ligesom det er tilfældet her på eksperten?

På forhånd tak
Avatar billede caturn Nybegynder
21. januar 2003 - 20:44 #1
1) $array = explode(" ", $var); //Deler en variabel op ved mellemrum og lægger hvert ord i en streng for sig selv.
$antal_tegn = strlen($array[1]); //Returnere antal tegn i variabel.

2) <?
header("Cache-control: no-cache, must-revalidate");
header("Pragma: no-cache");
?>
Gør at siden ikke bliver cached. Skal stå absolut øverst i din fil.



3) htmlentities($var); //Gør at html tags bliver skrevet som normal tekst.
Avatar billede caturn Nybegynder
21. januar 2003 - 20:45 #2
$var = implode(" ", $array); // Giver dig den gamle variabel tilbage.
Avatar billede zerocash Nybegynder
21. januar 2003 - 21:03 #3
Din 3) kan vist forstås på 2 måder ...

Hvis du mener hvordan man får php til at laver breaks der hvor der er lavet linieskift i textarea'et kan du bruge følgende funkion:

nl2br($var);
Avatar billede musiat Nybegynder
21. januar 2003 - 21:20 #4
Til 1)
Hvordan skal man løbe arrayet igennem for at tjekke alle ordene? Sådan her:

for($ord=0;$ord<=$array(????);$ord++){
  $antal_tegn = strlen($array[$ord]);
  if($antal_tegn>=15){
    echo "Ordet er for langt bla bla";
  }
}
Er det den rigtige måde eller er jeg helt galt på den? Jeg mangler længden på arrayet så løkken kan stoppe.
Avatar billede caturn Nybegynder
21. januar 2003 - 21:23 #5
Du får læng den på arrayet ved at skrive:
count($array); //Dette giver dig antal linier ikke højeste nummer i []'erne. :)

Og det lille script du har skrevet ser rigtig nok ud.
Avatar billede musiat Nybegynder
21. januar 2003 - 22:14 #6
Jeg har vist en dårlig dag:-/ Kan ikke få skidtet til at virke...
Mit lille script ser ud som flg:

  $array = explode(" ", $tekst);
  for($ord=0;$ord<=count($array);$ord++){
    $antal_tegn=strlen($array[$ord]);
    if($antal_tegn>=20){
    $godkendt=false;
    }
  }
  if($godkendt==false){
    echo "Du har indtastet et for langt ord";
  }else{
  ...

Desuden virker nl2br($tekst) eller htmlentities($tekst) ikke til linjeskift heller ikke? Har jeg sat den ind et forkert sted? Umiddelbart før ovennævnte script.
Avatar billede musiat Nybegynder
21. januar 2003 - 22:16 #7
Den returnerer hele tiden "Du har indtastet et for langt ord"
Avatar billede caturn Nybegynder
21. januar 2003 - 22:18 #8
for($ord=0;$ord<=count($array);$ord++){
skal hedde:
for($ord=0;$ord<count($array);$ord++){

Prøv at skifte false ud med 1.

nl2br burde virke til linieskift.

Til alle de ting du har skrevet.
Kommer der en fejl eller virker det bare ikke?
Avatar billede caturn Nybegynder
21. januar 2003 - 22:19 #9
Ok. Jeg nåede ikke at se din sidste kommentar.
Har du et link?
Avatar billede musiat Nybegynder
21. januar 2003 - 22:29 #10
Yeah, nu virker 1) Mange tak
Men jeg kan stadig ikke lave linjeskift med nl2br?
Avatar billede musiat Nybegynder
21. januar 2003 - 22:30 #11
Har det noget med tekstfeltet at gøre - skal det blob i stedet for text?
Avatar billede zerocash Nybegynder
21. januar 2003 - 22:42 #12
Det burde virke ... medmindre du har glemt echo ;-P

echo nl2br($tekst);
Avatar billede caturn Nybegynder
21. januar 2003 - 22:43 #13
Ideen med nl2br er at lave normale linieskift


sådan nogen her *GG*



om til <br> Hvis du bruger htmlentities efter den vil det selvfølgelig ikke virke så godt...
Avatar billede musiat Nybegynder
21. januar 2003 - 22:55 #14
Jeg skal ikke echo noget. Vil bare gerne gemme det i min database:

if($godkendt==1){
  echo "...ét ord, som var for langt.";
}else{
  nl2br($tekst);
  $query1=mysql_query("INSERT INTO .... blabla

Er det her ikke ok?
Avatar billede tipsen Nybegynder
22. januar 2003 - 00:21 #15
Udvidet 2:

<?php
header("Expires: Wed, 20 Feb 2002 20:02:00 GMT");                // date in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");    // always modified
header("Cache-Control: no-store, no-cache, must-revalidate");    // http/1.1
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");                                      // http/1.0
?>
Avatar billede avminarm Juniormester
22. januar 2003 - 09:07 #16
vedr (3) hvis du vil have at links og email bliver klikbare kan du kigge lidt på ljwebs tagster på www.ljweb.com under usefull scripts
Avatar billede musiat Nybegynder
22. januar 2003 - 09:29 #17
Det hele virker ok nu - jeg vil bare OGSÅ gerne betragte linjeskift som et mellemrum:
$array = explode(" ", $tekst);
Kam man ikke tilføje flere mulige 'skel' udover " "?
Avatar billede miraculix Nybegynder
22. januar 2003 - 09:35 #18
Hvis du skal indsætte i en database, vil jeg anbefale at du venter med at lave nl2br() til du henter dataene ud igen. Så kan du bruge dataene til andet end web og du gemmer ikke mere eller andet end brugeren har indtastet (du gemmer "originalen")

Men nej ovenstående duer ikke. nl2br er en funktion der returnerer den rettede tekst så du skal lave:

$tekst = nl2br($tekst);

Hvis du fastholder at du vil formattere teksten FØR indsættelsen.
Avatar billede musiat Nybegynder
22. januar 2003 - 09:47 #19
$tekst = nl2br($tekst)
...virker fint nu - jeg kunne bare ikke se i aftes, hvor jeg vist var lidt halvtræt.
Problemet er nu, at jeg gerne vil dele teksten op i ord, både ved mellemrum og ved linjeskift samtidigt. Altså når jeg skal måle længden på ordene i $tekst, så skiller den også ved et linjeskift og ikke bare et mellemrum?
Kan man smide flere strings ind i explode(" ", $tekst)?
Avatar billede otis Nybegynder
22. januar 2003 - 10:00 #20
1> Du kan kigge på www.php.net/wordwrap så kan du sige at hvis et ord er mere end 20 tegn langt kan den opdele med "-" eller hvad end du lyster.

2> Her kan du kigge på www.php.net/strip_tags og selv vælge hvilke tags du ønsker  'lovlige'. Hvis de ikke er lovlige fjernes de fra strengen.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester