Ik zit met het volgende:
Ik wil een filter mechanisme maken waarmee ik meerdere filters op een waarde kan loslaten op een makkelijke manier.
Als ik bij voorbeeld een string als 'numb3rs_()_#' wil ik alleen het 'numb3rs' deel overhouden. Uiteraard wil ik ook kunnen filteren op andere criteria. De huidige implementatie rammelt aan alle kanten en de logica is ver te zoeken. Even wat pseudo code
Je hoeft geen expert te zijn om te zien dat dit niet werk, ik heb de code nog niet eens gebruikt maar ik iets als 'numb3rs_()_#' zal waarschijnlijk terug komen als 'numbrs3' of '3numbrs' (afhankelijk hoe je de functie aanroept) en niet 'numb3rs'
Hoewel het voorbeeld makkelijk met een regex is op te lossen zoek ik toch wat meer functionaliteit en wil de code natuurlijk ook in meerdere projecten kunnen gebruiken.
Enige input wordt dan ook gewaardeerd
Ik wil een filter mechanisme maken waarmee ik meerdere filters op een waarde kan loslaten op een makkelijke manier.
Als ik bij voorbeeld een string als 'numb3rs_()_#' wil ik alleen het 'numb3rs' deel overhouden. Uiteraard wil ik ook kunnen filteren op andere criteria. De huidige implementatie rammelt aan alle kanten en de logica is ver te zoeken. Even wat pseudo code
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| function filter($var, $filters) { $filters = eplode(":", $filter); $n = count($filter); $tmpArray = array(); for($i=0; $i<$n; $i++) { if(is_callable($filters[$i])) { $tmpArray[] = call_user_func($var, "filter_" . $filters[$i); } } $now = time() $var = implode("<|" . crc32($now) . "|>", $tmpArray); $var = str_replace("<|" . $now . "|>", $var); return $var; } /* Helper functies */ function filter_alpha($var) { // Verwijder alles behalve letters } function filter_num($var) { // verwijder alles behalve nummers } /* Aanroep als volgt*/ $var = filter($var, "alpha:num"); |
Je hoeft geen expert te zijn om te zien dat dit niet werk, ik heb de code nog niet eens gebruikt maar ik iets als 'numb3rs_()_#' zal waarschijnlijk terug komen als 'numbrs3' of '3numbrs' (afhankelijk hoe je de functie aanroept) en niet 'numb3rs'
Hoewel het voorbeeld makkelijk met een regex is op te lossen zoek ik toch wat meer functionaliteit en wil de code natuurlijk ook in meerdere projecten kunnen gebruiken.
Enige input wordt dan ook gewaardeerd
[ Voor 0% gewijzigd door Suepahfly op 14-09-2006 22:40 . Reden: TR voor titel is al verzonden ]