1Danke
ERLEDIGT
JA
JA
ANTWORTEN
6
6
ZUGRIFFE
209
209
EMPFEHLEN
-
09.02.11 14:48 #1
- 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.
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.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);
}
}
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
ThomasSollte 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.
-
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
-
09.02.11 15:46 #3
- 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.
-
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
-
09.02.11 16:27 #5
- 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.
-
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.---------------------------------------------------------------------------------------------------
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
-
09.02.11 16:46 #7
- 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
-
BCB Ansistring als Rückgabewert einer Funktion
Von dern3ro im Forum Borland CBuilder und VCLAntworten: 2Letzter Beitrag: 22.03.10, 18:08 -
Rückgabewert einer Funktion
Von Dragonate im Forum C/C++Antworten: 5Letzter Beitrag: 30.11.09, 14:57 -
jQuery: $.post Rückgabewert als Rückgabewert der Funktion - geht das?
Von Kryptaesthesie im Forum Javascript & AjaxAntworten: 3Letzter Beitrag: 15.01.09, 07:40 -
combobox, rückgabewert einer js-funktion
Von rtd1978 im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 18.04.05, 14:12 -
Problem mit Rückgabewert einer Funktion
Von CLRS530 im Forum C/C++Antworten: 14Letzter Beitrag: 29.01.05, 03:49






Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren