2010-12-05 8 views
6

Je voudrais prendre une chaîne, et dépouiller tous les caractères en dehors de 0-9 et - (tirets).Renvoyer seulement 0-9 et tirets de la chaîne

Exemple:

si j'ai une chaîne qui ressemble à:

10 abc20-30

Comment puis-je faire ce retour de chaîne

10-20-30

(bande tous les caractères en plus des chiffres et des tirets)

Y at-il une sorte de regex à utiliser dans les preg_match ou str_replace?

Répondre

2

En supposant que vos données sont dans la chaîne de $, cela supprimera tous les caractères à l'exception des tirets et des chiffres

$string = preg_replace('/[^-0-9]/', null, $string); 
11
$result = preg_replace('/[^\d-]+/', '', $subject); 

[^\d-] correspond à tout caractère à l'exception des chiffres ou tableau de bord; le + dit "un ou plusieurs" de ceux-ci, ainsi les caractères adjacents seront remplacés immédiatement.