Avatar billede bwyan Nybegynder
28. januar 2005 - 11:36 Der er 19 kommentarer

strlen "uden mellemrum"

Hej Eksperten.

Jeg er ved at lave en gæstebog hvor det ikke må være muligt at poste ord der er længere end 40 bukstaver ialt.

Men hvordan får man funktionen strlen til ikke at tælle et "mellemrum" som en chr?
Avatar billede amews_aj Nybegynder
28. januar 2005 - 11:39 #1
Kan du ikke ligeså godt bruge

wordwrap($input, 40, ' ', 1);

Så deler den ord med et mellemrum hvis de er over 40 tegn
Avatar billede bwyan Nybegynder
28. januar 2005 - 11:41 #2
pointen er at det ikke skal kunne lade sig gøre at poste et ord der er længere en 40 bukstaver, uanset om det så er delt i flere ord eller et enkelt.

Input'et skal simpelthen discart'es, hvis der er ord på over 40 bukstaver. Så antager jeg nemlig at det er spam!
Avatar billede bwyan Nybegynder
28. januar 2005 - 11:45 #3
noget i retingen af:

$længde = strlen($input);
if($længde>='40') {
  echo'Du må ikke poster ord der er længere end 40 bukstaver!';
  exit();
}
Avatar billede bojo Nybegynder
28. januar 2005 - 11:45 #4
<?php
  $str="1 2 3 4 5 6";
  echo $str."<br>";
  echo strlen(str_replace(' ','', $str))."<br>";
    echo $str."<br>";
?>
Avatar billede bwyan Nybegynder
28. januar 2005 - 11:46 #5
problemet er bare at "strlen" også tæller et mellemrum med som en længde.
Avatar billede bojo Nybegynder
28. januar 2005 - 11:47 #6
$længde = strlen(str_replace(' ','', $input));
if($længde>='40') {
  echo'Du må ikke poster ord der er længere end 40 bukstaver!';
  exit();
}
Avatar billede amews_aj Nybegynder
28. januar 2005 - 11:49 #7
$input = explode(" ", $input);
for($i = 0; $i < count($input);$i++){
$længde = strlen($input);
if(strlen($input) > 40) {
  echo "Du må ikke poster ord der er længere end 40 bukstaver!";
  exit();
}
}

Sådan?
Avatar billede amews_aj Nybegynder
28. januar 2005 - 11:50 #8
bojo >> Så sætter han jo hele $input til et langt ord, og så melder den så længe man har skrevet mere en 40 tegn ialt.
Avatar billede bojo Nybegynder
28. januar 2005 - 11:53 #9
Dette eksempel viser at den ikke ændre i input, men melder nå der er indtastet mere end 40 tegn + mellemrum, dvs. som jeg opfatter spørgsmålet :-)

<?php
  $str="1 2 3 4 5 6";
  echo $str."<br>";
  echo strlen(str_replace(' ','', $str))."<br>";
  echo $str."<br>";
?>
Avatar billede amews_aj Nybegynder
28. januar 2005 - 11:54 #10
Ok, jeg opfatter det ikke på en måde...
Avatar billede bwyan Nybegynder
28. januar 2005 - 11:56 #11
nej det er sådan her:

når inputet har ord der er længere en 40chr (-mellemrum) så skal den ikke acceptere!
Avatar billede erikjacobsen Ekspert
28. januar 2005 - 11:58 #12
Leg lidt med den her


  function maxlen($a,$b) {
    return max($a,strlen($b));
  }

  $sentence = "Her er der en megetmegetmget langt ord, og det må man ikke\nmen det er her lææææææææææææææææææææææææææææææææææææææææææææææængere\n
  nemlig!";

  $m = array_reduce(preg_split('/[^a-z0-0æøåÆØÅ]+/i',$sentence),'maxlen',0);
  if ($m>50) {
      print "SPAM";
  } else {
      print "HAM";
  }
Avatar billede amews_aj Nybegynder
28. januar 2005 - 12:59 #13
JEg har altså opfattet rigtigt så:

virker det her ikke?

$input = explode(" ", $input);
for($i = 0; $i < count($input);$i++){
$længde = strlen($input);
if(strlen($input) > 40) {
  echo "Du må ikke poster ord der er længere end 40 bukstaver!";
  exit();
}
}
Avatar billede coderdk Praktikant
28. januar 2005 - 15:04 #14
Hvad med bare at indsætte mellemrum hvor det er for langt?

    $text = "Dette er en teeeeeeeeeeeeeeest teeeeeeest teeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeest";
    $maxlen = 7;
    echo preg_replace( "/([^ ]{" . $maxlen . "})/", "\\1 ", $text );
Avatar billede bwyan Nybegynder
29. januar 2005 - 14:00 #15
erikjacobsen's forlsag fungerede i hvert fald, lav det lige til et svar...

(og tak for hjælpen alle jer andre)
Avatar billede coderdk Praktikant
29. januar 2005 - 14:19 #16
Tror ikke du skal regne med et svar fra Erik, svar selv ;)
Avatar billede erikjacobsen Ekspert
29. januar 2005 - 16:24 #17
Nej tak, ingen point til mig.
Avatar billede amews_aj Nybegynder
17. april 2005 - 17:52 #18
Lukketid?
Avatar billede amews_aj Nybegynder
26. marts 2006 - 13:44 #19
lukketid?
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