Autor | Zpráva | ||
---|---|---|---|
Mufna Profil |
#1 · Zasláno: 22. 9. 2009, 15:34:10
Zdravím Vás. Reguláry nejsou má silná stránka, proto prosím o radu, jak sestavit regulární výraz, který z řetězce (ten může obsahovat libovolné znaky) odstraní 6 vybraných znaků a ničím (!) je nenahradí - ani mezerou.
"Vyříznout" potřebuju těchto 6 znaků: +()/-_ |
||
Nox Profil |
#2 · Zasláno: 22. 9. 2009, 15:37:09
Na toto by mělo stačit:
strtr() --------------------- Ale pokud bys chtěl mermomocí regulár, tak $string = preg_replace("#[+()/_-]#", "", $string); pomlčka je na konci schválně, pokud by nešel delimiter #, tak dej / a zdvoj / uprostřed..."+()" se myslím uprostřed regexpu escapovat nemusí (ikdyž 100% si jistej nejsem), - by mělo být na konci (aby neoznačovalo rozsah) |
||
Mufna Profil |
#3 · Zasláno: 22. 9. 2009, 15:38:03
Nox
Díky |
||
Mufna Profil |
#4 · Zasláno: 22. 9. 2009, 17:31:10 · Upravil/a: Mufna
Tak jsem to zprovoznil, ale má to 2 háčky:
1) ještě bych potřeboval ošetřit vyříznutí jakékoliv mezery z řetězce (jde to do DB jako číslo, takže jakákoliv mezera tomu vadí 2) nevím jestli to souvisí s delimiterem, ale když zadám nějaký číslo (jde o zadávání telefonu do formuláře), takže např: +(420) 444-555-666 tak do DB se dostane úplně jiný číslo, třeba 2147483647 (ve formuláři ale zůstane číslo správně - tj. zde by to bylo 420444555666, kdyby se ještě ošetřila ta mezera) Na údaj z formuláře používám nějakou takovouhle funkci: function check_phone($val) { $val = trim($val); $val = preg_replace("#[+()/_-]#", "", $val); if (!is_numeric($val)) { return false; } else { return $val; } } |
||
Časová prodleva: 15 let
|
0