Leerzeichen irritieren strlen()

Moderator: lauras

Beiträge bitte im neuen Forum

Leerzeichen irritieren strlen()

Beitragvon 22_111 » Sonntag 18. September 2011, 09:00

Code: Alles auswählen
<?php
    $var = $var = '           L         o        r          e          m        ';
    $var = trim($var);

    $maximale_zeichen = 5;

    if(substr($var, $maximale_zeichen))
    {
        echo 'Maximal 5 Zeichen erlaubt';
    }
    else
    {
        echo 'OK';
    }
?>


Wieso funktioniert das Script?
Zuletzt geändert von 22_111 am Sonntag 18. September 2011, 15:36, insgesamt 1-mal geändert.
22_111
HTML-Newbie
 
Beiträge: 32
Registriert: Sonntag 11. September 2011, 09:45

Re: Leerzeichen irritieren substr()

Beitragvon Basiii » Sonntag 18. September 2011, 10:51

Sei froh das ich gerade nicht in deiner Nähe bin :mrgreen:

Gucke dir bitte noch ein mal an wozu substr gedacht ist und wie es funktioniert, aber vor allem was es zurück gibt...

Kleiner Tipp:

Code: Alles auswählen

  if
('hallo') // trifft auf jeden Fall zu
  {
    // Code
  }
 


Noch ein Tipp:

Was du brauchst ist strlen
Benutzeravatar
Basiii
HTML-Acrobat
 
Beiträge: 1139
Registriert: Dienstag 12. Januar 2010, 13:57

Re: Leerzeichen irritieren substr()

Beitragvon 22_111 » Sonntag 18. September 2011, 11:16

Basiii hat geschrieben:Sei froh das ich gerade nicht in deiner Nähe bin :mrgreen:

:wink:
Basiii hat geschrieben:Noch ein Tipp: Was du brauchst ist strlen


Jop auch grad gemerkt, so will er aber irgendwie auch nicht
Code: Alles auswählen
<?php
    $var = $var = '           L   rrrr      o        r          e          m        ';
    $var = trim($var);

    if(strlen($var > 5))
    {
        echo 'Maximal 5 Zeichen erlaubt';
    }
    else
    {
        echo 'OK';
    }
?>


Zeigt OK an..
22_111
HTML-Newbie
 
Beiträge: 32
Registriert: Sonntag 11. September 2011, 09:45

Re: Leerzeichen irritieren substr()

Beitragvon Basiii » Sonntag 18. September 2011, 12:14

Code: Alles auswählen
<?php

    $string 
$string 'Ein Text der l&auml;nger als 5 Zeichen ist.';
    
$string trim($string);

    if(
strlen($string))
    {
        print 
'Maximal 5 Zeichen erlaubt';
    }
    else
    {
        print 
'OK';
    }

?>
Benutzeravatar
Basiii
HTML-Acrobat
 
Beiträge: 1139
Registriert: Dienstag 12. Januar 2010, 13:57

Re: Leerzeichen irritieren substr()

Beitragvon Sarkkan » Sonntag 18. September 2011, 13:27

22_111 sei mir nicht böse, aber hast du überhaupt einen blassen Schimmer was du schreibst und warum oder schreibst du einfach auf gut glück?
Benutzeravatar
Sarkkan
HTML-Acrobat
 
Beiträge: 1557
Registriert: Montag 5. April 2010, 01:46
Wohnort: Bei Köln

Re: Leerzeichen irritieren substr()

Beitragvon 22_111 » Sonntag 18. September 2011, 13:35

Ja na klar denn es sollten mehrere Leerzeichen die auch als Zeichen gelten entfernt werden, sagen wir ein Formular mit max 10000 Zeichen und der Benutzer gibt mit ganz ganz vielen leerrzeichen 20000 Zeichen ein....

Darauf wird nicht geprüft?
22_111
HTML-Newbie
 
Beiträge: 32
Registriert: Sonntag 11. September 2011, 09:45

Re: Leerzeichen irritieren substr()

Beitragvon Sarkkan » Sonntag 18. September 2011, 14:12

Meistens wendet man trim() an und überprüft dann ob der eingegebene String größer wie Null ist und nicht länger als Maximal erlaubt.

Aber darum ging es mir nicht, es ging mir mehr um strlen($var > 5).
Benutzeravatar
Sarkkan
HTML-Acrobat
 
Beiträge: 1557
Registriert: Montag 5. April 2010, 01:46
Wohnort: Bei Köln

Re: Leerzeichen irritieren substr()

Beitragvon 22_111 » Sonntag 18. September 2011, 15:11

Sarkkan hat geschrieben:Meistens wendet man trim() an und überprüft dann ob der eingegebene String größer wie Null ist und nicht länger als Maximal erlaubt.

Aber darum ging es mir nicht, es ging mir mehr um strlen($var > 5).



Lool, das es dir nicht darum geht hilft mir in diesem Fall nicht wirklich..

Sieh her:

Code: Alles auswählen
<?php

    $string = $string = 'error';
    $string = trim($string);

    if( strlen($string) > 5)
    {
        echo 'Maximal 5 Zeichen erlaubt';
    }
    else
    {
        echo 'OK<br />';
        echo $string;
    }

?>


Oben klappt es ganz normal

-----------------------------------------

Und so klappt es nicht, da er die Leerzeichen mit einrechnet:

Code: Alles auswählen
<?php

    $string = $string = 'e            r       ro           r';
    $string = trim($string);

    if( strlen($string) > 5)
    {
        echo 'Maximal 5 Zeichen erlaubt';
    }
    else
    {
        echo 'OK<br />';
        echo $string;
    }
?>


Ich brauche aber das er die Leerzeichen nicht mitzählt und trotzdem nicht mehr als 5 buchstaben eingegeben werden dürfen?

Sonst könnte man sich die Funktion trim() ja gleich schenken
22_111
HTML-Newbie
 
Beiträge: 32
Registriert: Sonntag 11. September 2011, 09:45

Re: Leerzeichen irritieren substr()

Beitragvon Sarkkan » Sonntag 18. September 2011, 15:17

Wie gesagt.. das ist so die reguläre Vorgehensweise.
Ansonsten entfern doch einfach alle Leerzeichen, die zu viel sind?

Und tut mir Leid, dass es mir darum geht, dass du weißt was du machst und nicht nur einfach irgendeinen Unsinn schreibst und nicht verstehst, wieso es nicht klappt.
Benutzeravatar
Sarkkan
HTML-Acrobat
 
Beiträge: 1557
Registriert: Montag 5. April 2010, 01:46
Wohnort: Bei Köln

Re: Leerzeichen irritieren substr()

Beitragvon 22_111 » Sonntag 18. September 2011, 15:23

Sarkkan hat geschrieben:Wie gesagt.. das ist so die reguläre Vorgehensweise.
Ansonsten entfern doch einfach alle Leerzeichen, die zu viel sind?

Wenn ich nur wüsste wie, es geht ja später darum das in einem Formularfeld der benutzer die Leerzeichen macht und nicht ich, und irgendwie entfernt trim zwar die leerzeichen aber er zählt auch die leerzeichen zwischen den wörtern, das soll ernicht tun. Sry bin Anfänger

Sarkkan hat geschrieben:Und tut mir Leid, dass es mir darum geht, dass du weißt was du machst und nicht nur einfach irgendeinen Unsinn schreibst und nicht verstehst, wieso es nicht klappt.


Als erstes habe ich den Befehl verwechselt, das stimmt aber sonst weiß oder wüsste ich von Anfang an was ich machen wollte..

Vielleicht ist mir die Umschreibung nicht ganz gelungen :oops:
22_111
HTML-Newbie
 
Beiträge: 32
Registriert: Sonntag 11. September 2011, 09:45

Re: Leerzeichen irritieren substr()

Beitragvon Sarkkan » Sonntag 18. September 2011, 15:28

22_111 hat geschrieben:
Sarkkan hat geschrieben:Wie gesagt.. das ist so die reguläre Vorgehensweise.
Ansonsten entfern doch einfach alle Leerzeichen, die zu viel sind?

Wenn ich nur wüsste wie, es geht ja später darum das in einem Formularfeld der benutzer die Leerzeichen macht und nicht ich, und irgendwie entfernt trim zwar die leerzeichen aber er zählt auch die leerzeichen zwischen den wörtern, das soll ernicht tun. Sry bin Anfänger

Ich würde ganz einfach via str_replace() arbeiten und einfach 2 Leerzeichen durch eines ersetzen.
Benutzeravatar
Sarkkan
HTML-Acrobat
 
Beiträge: 1557
Registriert: Montag 5. April 2010, 01:46
Wohnort: Bei Köln

Re: Leerzeichen irritieren substr()

Beitragvon 22_111 » Sonntag 18. September 2011, 15:30

Sarkkan hat geschrieben:
22_111 hat geschrieben:
Sarkkan hat geschrieben:Wie gesagt.. das ist so die reguläre Vorgehensweise.
Ansonsten entfern doch einfach alle Leerzeichen, die zu viel sind?

Wenn ich nur wüsste wie, es geht ja später darum das in einem Formularfeld der benutzer die Leerzeichen macht und nicht ich, und irgendwie entfernt trim zwar die leerzeichen aber er zählt auch die leerzeichen zwischen den wörtern, das soll ernicht tun. Sry bin Anfänger

Ich würde ganz einfach via str_replace() arbeiten und einfach 2 Leerzeichen durch eines ersetzen.


check ich noch nicht, vielleicht bekomme ich es ja noch hin.

Gehts so auch: http://www.schattenbaum.net/php/while.php

Geht das denn überhaupt oder drücke ich mich imemr noch undeutlich aus, ich kriegs nicht hin :|
Zuletzt geändert von 22_111 am Sonntag 18. September 2011, 15:43, insgesamt 2-mal geändert.
22_111
HTML-Newbie
 
Beiträge: 32
Registriert: Sonntag 11. September 2011, 09:45

Re: Leerzeichen irritieren substr()

Beitragvon Sarkkan » Sonntag 18. September 2011, 15:41

Japp, so würde es auch gehen, aber Reguläre Ausdrücke sind meistens etwas schwerer.
Außerdem brauchen Sie länger.

Mit str_replace suchen wir halt nach 2 Leerzeichen und ersetzten dieses durch nur noch eines.
Dadurch das str_replace so lange arbeitet bis keine 2 Leerzeichen mehr gefunden werden muss im Endeffekt da nur noch eines stehen.
Code: Alles auswählen
_ _ _ _
=> Wird ersetzt zu
_ _ _

_ _ _
=> Wird ersetzt zu
_ _

_ _
=> Wird ersetzt zu
_

_
Vielleicht verdeutlicht diese Skizze was da vorgeht^^
Benutzeravatar
Sarkkan
HTML-Acrobat
 
Beiträge: 1557
Registriert: Montag 5. April 2010, 01:46
Wohnort: Bei Köln

Re: Leerzeichen irritieren strlen()

Beitragvon 22_111 » Sonntag 18. September 2011, 15:43

Nicht wirklich!!! Ich verstehe zwar was du meinst aber nicht wie

1. Es soll in einem Formular vom Benutzer eine Nachricht eingegeben werden können
2. Enthält diese viele 100 Leerzeichen und hat der Benutzer ohne Leerzeichen >= 10000 Zeichen dann Meldung ausgeben. Inhalt ist zu lang, ansonsten OK
22_111
HTML-Newbie
 
Beiträge: 32
Registriert: Sonntag 11. September 2011, 09:45

Re: Leerzeichen irritieren strlen()

Beitragvon Sarkkan » Sonntag 18. September 2011, 15:50

Ich werde dir keinen kompletten Code schicken, nur das das noch einmal klar ist.
Einzig werde ich dir sagen wie man vorgeht.

  1. Benutzer gibt in deinem Formular eine Nachricht ein.
  2. Du lässt die Nachricht mit meinem str_replace-Tipp durchlaufen, danach sind alle mehrfachen Leerzeichen ersetzt, den:
    Wenn wir 5 Leerzeichen haben und 2 davon in eines Umwandeln haben wir noch 4 Leerzeichen.
    Bei 4 Leerzeichen werden wieder 2 davon genommen und in eines umgewandelt => 3
    3 Leerzeichen haben immer noch 2 aufeinander folgende Leerzeichen die in eines umgewandelt werden => 2 Leerzeichen bleiben übrig
    2 Leerzeichen haben wir und 2 werden in eines umgewandelt, bleibt also noch 1 Leerzeichen an dieser Stelle
    1 Leerzeichen passt nicht mehr auf das Suchmuster, ergo schaut sich die Funktion den Rest des Strings an und verfährt genauso.
  3. Wir lassen unseren bereinigten String zählen und Speichern diesen Wert in einer Variabeln.
  4. Wir überprüfen ob der String größer wie 0 ist, anschließend ob er nicht größer wie unsere Maximale Stringlänge
  5. Wenn beides zutrifft verfahren wir weiter, also speichern den String ab oder sonstiges. Ansonsten bekommt der Benutzer eine Fehlermeldung.
Benutzeravatar
Sarkkan
HTML-Acrobat
 
Beiträge: 1557
Registriert: Montag 5. April 2010, 01:46
Wohnort: Bei Köln

Nächste

Beiträge bitte im neuen Forum

Zurück zu Ausgelagertes

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron