Regex - Bande non numérique et supprimer cents si tout
Je suis actuellement en train de travailler sur un projet en PHP et je suis dans le besoin de certains Regex aider. Je voudrais être en mesure de prendre un utilisateur saisi une valeur monétaire et de la bande de non numeric et decimal places/cents.
Ex:
'2.000,00' à '2000'
'$ 2.000,00' à '2000'
'2abc000' à '2000'
'2.000' à 2000
(Je suis en utilisant non de la devise américaine de mise en forme)
Comment puis-je faire cela? Je vous remercie de l'aide - Grâce
OriginalL'auteur RS7 | 2011-01-13
Vous devez vous connecter pour publier un commentaire.
Que vous pouvez faire:
OriginalL'auteur codaddict
qui devrait remplacer les caractères numériques avec des chaînes vides.
avant de faire ce dqhendricks montre, vous avez juste besoin de "strpos" de la virgule (,), puis obtenir le sous-chaîne à cette position.
preg_replace('/,.+$/s', ", $input)
ou substr($input, 0, strrpos($input, ','))
vous pouvez même mettre les regexs dans un tableau et faire un preg_replace() déclaration à faire à la fois de remplacement.
OriginalL'auteur dqhendricks
Cela devrait faire ce que vous voulez.
Le match démarre dès que le premier nombre est trouvé, et de s'arrêter quand il frappe quelque chose qui n'est ni un nombre, ni d'un point (ie. une virgule ou la fin de la chaîne dans votre exemple)
EDIT : oublié de retirer les lettres à l'intérieur de la valeur de la première.
(Juste un avis personnel, mais si un utilisateur a écrit chracters qui ne sont pas des nombres, des points, des virgules ou des symboles de devise je voudrais refuser l'entrée au lieu d'essayer de le nettoyer)
OriginalL'auteur Thibault Witzig
Sur le côté client j'utilise des classes sur les entrées:
OriginalL'auteur gordon