Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

i need to check, if the string in my PHP code contains only a specified list of characters. But as some of them might need scape, i just can't get it to work. I have tried everything, but it just doesen't work...

The required validation is:

  • 0-9
  • A-Z
  • a-z
  • chars: .%^&()$#@!/-+/

Basicaly, i want to check if there is an unknown ascii character (i don't know if there is a function to do that already).

My code is like this now:

if(preg_match("/[A-Za-z0-9.#-+*\/=\_\%$()]/", $cmd) === false)

So, all of the chars are special?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
163 views
Welcome To Ask or Share your Answers For Others

1 Answer

No, all of those characters are not special. If you're unsure, you can let PHP do the escaping for you with preg_quote():

$regex = '/[A-Za-z0-9' . preg_quote( '.%^&()$#@!/-+/', '/') . ']+/';
if( !preg_match( $regex, $cmd))

Also, preg_match() returns an int, and you're doing === on a boolean, which will never hold true, since they will never be of the same type. You can simply check for if( !preg_match()).


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...