View Full Version : [php] Problema con la funzione trim()
Salve, ho scoperto tempo fa che la funzione trim() non serve solo per togliere gli spazi, ma puoi fargli togliere ciò che vuoi.
Cosi ho creato questa funzione
function sicurezza($parola, $limite_nome)
{
$trim_nome = '0123456789*/.;:_£!?)((/&%çç*"+°><\'{}][~`^¢|¬#@|¬';
$parola = trim($parola , $trim_nome);
if ( strlen ( $parola ) > $limite_nome ) $parola = substr($parola, 0, $limite_nome);
return $parola;
}
In modo da restituire $parola "pulita", senza ne numeri, ne simboli strani e soprattutto maligni. Il problema é che funziona si e no! Le parentesi normali non me le toglie ad esempio!!
Ho sbagliato qualcosa?
grazie
bobbytre
17-03-2010, 20:03
Salve, ho scoperto tempo fa che la funzione trim() non serve solo per togliere gli spazi, ma puoi fargli togliere ciò che vuoi.
Cosi ho creato questa funzione
function sicurezza($parola, $limite_nome)
{
$trim_nome = '0123456789*/.;:_£!?)((/&%çç*"+°><\'{}][~`^¢|¬#@|¬';
$parola = trim($parola , $trim_nome);
if ( strlen ( $parola ) > $limite_nome ) $parola = substr($parola, 0, $limite_nome);
return $parola;
}
In modo da restituire $parola "pulita", senza ne numeri, ne simboli strani e soprattutto maligni. Il problema é che funziona si e no! Le parentesi normali non me le toglie ad esempio!!
Ho sbagliato qualcosa?
grazie
ti consiglio di cercare informazioni sulle espressioni regolari e sulle funzioni di php preg_match , preg_match_all , preg_replace , ... , preg_*
non sono di immediata compresione ma una volta che le capisci , ti si apre un mondo nuovo !
ti consiglio di cercare informazioni sulle espressioni regolari e sulle funzioni di php preg_match , preg_match_all , preg_replace , ... , preg_*
non sono di immediata compresione ma una volta che le capisci , ti si apre un mondo nuovo !
ok grazie! ma quindi dici di lasciar stare la funzione trim()?
Mi fai un esempio in cui non funziona ?
Mi fai un esempio in cui non funziona ?
Ecco qui:
function sicurezza($parola, $limite_nome)
{
$trim_nome = '$0123456789*/.;:_£!?)((/&%çç*"+°><\'{}][~`^¢|¬#@|¬';
$parola = trim($parola , $trim_nome);
if ( strlen ( $parola ) > $limite_nome ) $parola = substr($parola, 0, $limite_nome);
return $parola;
}
$parola= 'bra$$$$1234 .-..';
echo sicurezza($parola, 12);
Output é questo: "bra$$$$1234 "
Non capisco proprio:P
Lo spazio dov'è fra i caratteri di trim_nome ? Non mi sembra che ci sia, in tal caso il risultato è corretto.
Lo spazio dov'è fra i caratteri di trim_nome ? Non mi sembra che ci sia, in tal caso il risultato è corretto.
in che senso? allora nn ho capito come funziona..non dovrebbe eliminare i caratteri che sono all'interno di trim_nome?
in che senso? allora nn ho capito come funziona..non dovrebbe eliminare i caratteri che sono all'interno di trim_nome?
No, guarda solo all'inizio e alla fine della stringa e si ferma non appena trova un carattere non presente in trim_nome.
a ma dai? quindi dovrei usare un while?
del tipo:
while(trim($parola , $trim_nome))
{
$parola = trim($parola , $trim_nome);
}
No, trim si ferma sempre allo stesso carattere.
No, trim si ferma sempre allo stesso carattere.
cioé? quindi nn posso fare quello di cui ho bisogno con trim?
Noe tu invece cosa mi consigli di usare?
Mattyfog
19-03-2010, 14:22
anche se non ho capito perchè non si può usare un while penso che dovrebbe andare se ripeti l'operazione senza alcun cliclo più volte e separando in + variabili $trim_nome
Facendo più o meno così:
$parola = trim($parola , '$');
$parola = trim($parola , '0');
$parola = trim($parola , '1');
$parola = trim($parola , '2');
$parola = trim($parola , '3');
eccetera
Ma ripeto, non avendo già capito perchè non si può usre il while non so se funzionerebbe.
Lui vuole sostituire anche all'interno della frase, non solo ai limiti esterni, quindi trim non va bene. Il consiglio sulle expressioni regolari è sicuramente valido.
Mattyfog
19-03-2010, 16:22
Ok :)
Mattyfog
19-03-2010, 16:22
Ok :)
$stringa = preg_replace("#[^a-z]#i", "", $stringa);
http://codepad.org/epLdXk9h
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.