tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Yaslaw
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
209
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Hallo an alle,

    ich bin gerade dabei ein Suchformular zu erstellen.
    Hier gibt es ein Textfeld in welches die Suchbegriffe durch Komma getrennt eingegeben werden. Wobei Wörter die kürzer als 3 Zeichen sind nicht berücksichtigt werden sollen.

    Die Begriffe werden mit explode in ein Array aufgeteilt und dann sollen mit array_filter die zu kurzen Worte gelöscht werden.


    PHP-Code:
    $suchbegriff explode(","$_POST["suche"]);
    $suchbegriff array_filter($suchbegriff"len_suche");

    var_dump($suchbegriff);

    function 
    len_suche($begriff) {
    //so sollte es eigentlich sein damit Leerzeichen keine falsche Länge verursachen
        
    $begriff trim($begriff);

        if (
    strlen($begriff) < 3) {
            return 
    false;
        } else {
            return 
    trim($begriff);
        }

    Wenn ich jetzt eingebe "Hund, Katze, xy" wird "xy" zwar herausgefiltert aber bei Katze bleibt das führende Leerzeichen stehen und bei var_dump mit einer Länge von 6 Zeichen angegeben.

    Jetzt die zwei Fragen:
    Warum wird "xy" gefiltert wo doch mit dem Leerzeichen die min. Länge von 3 Zeichen auch erreicht ist?

    Warum wird die TRIM-Anweisung in der Funktion nicht ausgeführt?

    Danke schonmal

    Thomas
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    array_filter erwartet true oder false. Aber kein neuer wert für den Inhalt.

    Du kannst nach dem Array_filter noch ein array_map auf trim durchführen

    PHP-Code:
    $suchbegriff explode(","$_POST["suche"]);
    $suchbegriff array_filter($suchbegriff"len_suche");
    $suchbegriff array_map('trim'$suchbegriff);

    var_dump($suchbegriff);

    function 
    len_suche($begriff) {
        return (
    strlen(trim($begriff)) < 3);

     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  3. #3
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Danke dir yaslaw,
    aber ich habe wohl selber was gefunden: array_walk


    PHP-Code:
    $suchbegriff explode(","$_POST["suche"]);

    array_walk($suchbegriff"len_suche");


    function 
    len_suche($arr$key) {

    global 
    $suchbegriff;

    $arr trim($arr);

    if (
    strlen($arr) < 3) {
        unset(
    $suchbegriff[$key]);
    } else {
        
    $suchbegriff[$key] = $arr;
    }


     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  4. #4
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Ich rate dir davon ab, innerhalb der Funktion den Array zu manipulieren , also Einträge zu entfernen.
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  5. #5
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Auch wenn ich mich wiederhole: Ich glaube dir alles.

    Aber um nicht dumm zu sterben würde mich interessieren was daran so schlimm ist?
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  6. #6
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Die folgen sind nicht genaus absehbar, wenn man ein array ändert das man gerade durchläuft. Ich kenn die genaue funktiobnalität von array_walk nicht (also ich weiss genau was er normal angewendet alles macht, aber ich weiss nicht wie die Funktion intern funktioniert).

    Wenn du array_walk nur brauchst um durch den Array zu gehen, nicht aber wie für array_walk vorgesehen die refernzierte Werte zu verändern, dann kannst du grad so gut mit einem Iterator durchgehen oder mit einer klassischen foreach-Schleife. Damit kannst du dir die Funktion sparen und auch den Globalzugriff auf den Array.
    tombe bedankt sich. 
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  7. #7
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Ich kann mich immer wieder nur bedanken und hoffen das ich dir irgendwann vielleicht auch mal helfen kann!
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

Ähnliche Themen

  1. BCB Ansistring als Rückgabewert einer Funktion
    Von dern3ro im Forum Borland CBuilder und VCL
    Antworten: 2
    Letzter Beitrag: 22.03.10, 18:08
  2. Rückgabewert einer Funktion
    Von Dragonate im Forum C/C++
    Antworten: 5
    Letzter Beitrag: 30.11.09, 14:57
  3. jQuery: $.post Rückgabewert als Rückgabewert der Funktion - geht das?
    Von Kryptaesthesie im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 15.01.09, 07:40
  4. combobox, rückgabewert einer js-funktion
    Von rtd1978 im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 18.04.05, 14:12
  5. Problem mit Rückgabewert einer Funktion
    Von CLRS530 im Forum C/C++
    Antworten: 14
    Letzter Beitrag: 29.01.05, 03:49