2010-07-29 6 views

Répondre

2

supprimer tous les caractères Juste invalide et vérifier si le reste a un format valide:

$cleaned = preg_replace('/[^-0-9]+/', '', $str); 
if (preg_match('/^-?[0-9]+$/', $cleaned)) { 
    // now valid 
} 

Ok, voici une autre suggestion:

preg_replace('/.*?(-?\d+).*/', '$1', $str) 
+0

Merci, mais quand je l'applique, il ne retourne rien: var_dump (preg_replace ('/ (^ -? [0-9 ] +)?. * |^[^ - 0-9] +/',' $ 1 ',' - $ ---- correspond à-- 12-- ')); // chaîne de sortie '' (longueur = 0) – jartaud

+0

@jartaud: J'ai retiré ma première suggestion. – Gumbo

+0

le panorama est: Im wainting pour une variable _GET négative qui m'aide avec la méthode JS aller. Maintenant, ce que j'essaie de faire est de supprimer tous les caractères sauf le signe moins? Get = - 2 '' '# $% $% $ devrait être:? Get = -2 – jartaud

1

devrait être aussi simple que ...

preg_match('#^-?[0-9]$#', $input); 

Mise à jour

preg_replace('#-\d#', $replacement, $input); 
+0

notez que le point d'interrogation rend facultatif le signe moins, si nécessaire, supprimez simplement le point d'interrogation. –

+0

Merci pour votre aide, oui le signe est nécessaire et je n'ai besoin que d'un en face (-digit) – jartaud

+0

J'ai ajouté une mise à jour basée sur de nouvelles informations. –

1
/^-\d+$/ 

ou si moins est facultative

/^-?\d+$/