我写过这个函数:
function contain_special($string){
# -- Check For Any Special Chars --
if(preg_match('/[^a-z0-9]/',$string)){
# - Special Chars Were Found -
return true;
}//end of special chars found
else{
# - String Does Not Contain Special Chars -
return false;
}//end of else - does not contain special chars
}//end of function
检查字符串是否包含特殊字符。
该函数应该忽略字母数字字符并查找特殊字符。如果找到,请返回true
,否则返回false
。
现在,在使用大多数特殊字符进行测试时,一切正常:
$text="sdfs-df";
var_dump(contain_special($text));//returns true because "-" was found
但是,当我的$
不在字符串的某个位置时,该函数无法取出它:
$text="sdfsdf$";//this works
$text="sdf$sdf";//this does not work
$text="$sdfsdf";//this works
关于我在这里做错了什么的想法?
答案 0 :(得分:2)
看看echo $text
。您可能没有使用您认为自己的字符串。文字美元符号通常需要以双引号字符串进行转义,以便您不使用变量$sdfsdf
。
我建议在这里使用单引号。
答案 1 :(得分:0)
^
用于字符串的开头。好的 - 它也会否定间隔(但你不需要否定 - 只需切换true和false)
$
用于字符串结尾。
*
意味着零次。
所以我认为你想要的正则表达式是:
\^[a-z0-9]*$\
这有用吗?
答案 2 :(得分:0)
双引号中的美元开始变量替换,除非它们后面没有有效启动变量名的char。
这解释了为什么$text="sdfsdf$"
有效而$text="sdf$sdf"
无效。
如果您有一个名为$sdfsdf
的变量。