PDA

View Full Version : [PHP] preg_match


clavero
08-02-2011, 21:31
Buonasera, ho bisogno di un aiuto:

io ho questa funzione che uso per estrarre un dato(in questo caso estrae +1.9) che viene fornito cosi: $dato = '+1.9 km/h';

function strip_units ($data) {
preg_match('/([\d\.\+\-]+)/',$data,$t);
return $t[1];
}

ora io ho un dato fornito cosi: $dato = '+ 6 %'; (con lo spazio dopo il +)

se uso la funzione sopra mi estrae solo il "+", senza il 6(ovviamente potrebbe essere anche - 6 %)...io invece vorrei estraesse + 6 (in pratica mi serve x sommarlo ad un altro valore)

conosco solo le basi del php e questa cosa non riesco a risolverla...

qualcuno puņ aiutarmi?:)

clavero
09-02-2011, 13:14
Buonasera, ho bisogno di un aiuto:

io ho questa funzione che uso per estrarre un dato(in questo caso estrae +1.9) che viene fornito cosi: $dato = '+1.9 km/h';

function strip_units ($data) {
preg_match('/([\d\.\+\-]+)/',$data,$t);
return $t[1];
}

ora io ho un dato fornito cosi: $dato = '+ 6 %'; (con lo spazio dopo il +)

se uso la funzione sopra mi estrae solo il "+", senza il 6(ovviamente potrebbe essere anche - 6 %)...io invece vorrei estraesse + 6 (in pratica mi serve x sommarlo ad un altro valore)

conosco solo le basi del php e questa cosa non riesco a risolverla...

qualcuno puņ aiutarmi?:)


niente proprio?:cry:

Ballantine
09-02-2011, 15:07
Non sono un grande esperto ma provo a darti una mano.
Secondo me se usi il pattern:
/[-+]{1}[ ]?[0-9]+(\.[0-9]+)?/
dovresti risolvere il tuo problema.
In dettaglio:
- all'inizio ci deve essere un + o un -;
- dopo il segno ci puo' essere uno spazio;
- dopo l'eventuale spazio ci deve essere almeno un numero;
- dopo il numero ci puo' essere un punto seguito da almeno un numero.

Tieni pero' a mente che se inserisci un input tipo '+ 3.1 km/h' otterrai:
Array
(
[0] => + 3.1
[1] => .1
)
e quindi devi stare attento a scegliere il risultato giusto ;)