Tim Nichols
Tim Nichols

Reputation: 85

Remove everything but numbers and minus sign PHP preg_replace

I've currently got

preg_replace('/[^0-9]/s', '', $myvariable); 

For example the input is GB -3. My current line is giving me the value 3. I want to be able to keep the minus so that the value shows -3 instead of the current output of 3.

Upvotes: 8

Views: 12337

Answers (1)

Oussama Jilal
Oussama Jilal

Reputation: 7739

try this :

preg_replace('/[^\d-]+/', '', $myvariable); 

breakdown of regex:

  • // on both sides are regex delimiter - everything that is inside is regex
  • [] means that this is character class. Rules change in character class
  • ^ inside character class stands for "not".
  • \d is short for [0-9], only difference is that it can be used both inside and outside of character class
  • - will match minus sign
  • + in the end is the quantifier, it means that this should match one or more characters

Upvotes: 15

Related Questions