我需要检查一下,如果我的PHP代码中的字符串只包含指定的字符列表。但是,由于其中一些人可能需要景观,我无法让它发挥作用。我已经尝试了一切,但它只是不起作用......
所需的验证是:
基本上,我想检查是否有一个未知的ascii字符(我不知道是否有一个函数已经这样做了。)
我的代码现在是这样的:
if(preg_match("/[A-Za-z0-9\.\#\-\+\*\\\/\=\_\%\$\(\)]/", $cmd) === false)
那么,所有的字符都很特别吗?
答案 0 :(得分:2)
不,所有这些角色都不特别。如果您不确定,可以让PHP使用preg_quote()
:
$regex = '/[A-Za-z0-9' . preg_quote( '.%^&()$#@!/-+/', '/') . ']+/';
if( !preg_match( $regex, $cmd))
此外,preg_match()
返回一个int
,你在布尔值上做===
,它永远不会成立,因为它们永远不会是同一类型。您只需检查if( !preg_match())
。
答案 1 :(得分:1)
答案 2 :(得分:0)
if(preg_match("/[.%^&()$#@!/+-a-zA-Z\d\s]+/", $cmd) === false)
如果你需要锚点if(preg_match("/^[.%^&()$#@!/+-a-zA-Z\d\s]+$/", $cmd) === false)