如何在字符串中检查"AD'"
?如果有人试图使用域前缀"AD'"
登录-我希望应用程序忽略"AD'"
并检查前3个字符之后的用户名。
I have try:
if (strpos($username, "AD''") !== false) {
$username = substr($username, 3);
}
if (strpos($username, "AD''") !== false) {
检查AD'
在任意字符串中的出现情况。因此,AD'ABC
为真,ABC'AD'ABC
也为真。
你可能需要的是使用
if (strpos($username, "AD''") === 0) {
要知道用户名以AD'
开始。请注意,我们使用===
运算符来测试strpos
的返回值,因为如果没有找到AD'
,则返回false
。
编辑:但是请注意与
if (strpos($username, "AD''") === 0) {
$username = substr($username, 3);
}
用户也可以输入AD'AD'ABC
,最终结果将是AD'ABC
。您可能想这样做:
while(strpos($username, "AD''") === 0) {
$username = substr($username, 3);
}
确保用户名不能以AD'
http://codepad.viper - 7. - com/uwc8or
你需要仔细检查你得到的是字符串的一部分,它必须在字符串的开头。
if (strpos($a,"AD''") !== false)
if (strpos($a,"AD''") == 0)
echo substr($a,3);
另一个解决方案是使用正则表达式
问题是'被认为是转义序列。因此,对于字符串使用'而不是'。
此外,将strpos的返回值与false进行比较是有效的,因为false被定义为0,但strpos实际上返回的是一个数值(出现的字符/字符串的位置)。我强烈建议在这里使用数值比较,而不是布尔值。
:
$username = 'AD'testuser';
if (strpos($username, "AD") <= 0) {
$username = substr($username, strpos($username, "AD")+3);
print $username;
}
else {
print $username;
}
您可以通过将其p到http://phptester.net/
进行测试有关反斜杠的更多信息,请参见:如何在PHP中创建带有反斜杠的字符串?