所以我试图找到几个特殊字符,例如DOM元素返回的字符串中的{,$
当我跑步时
if(strpos("$", $u) === FALSE AND strpos("{", $u) === FALSE AND $u != "#") {
echo "Attempting {$u} ecoded: ".urlencode($u)."<br/>";
return true;
}
然而,当我运行它时,会打印出来:
Attempting register.php ecoded: register.php
Attempting {$url} ecoded: %7B%24url%7D
Attempting $authUrl ecoded: %24authUrl
Attempting services.php ecoded: services.php
所以我尝试使用HEX值和ASCII但仍然没有运气!
答案 0 :(得分:1)
$是双引号字符串中的特殊字符。您需要使用反斜杠转义它或使用单引号。
if(strpos("\$", $u) === FALSE AND strpos("{", $u) === FALSE AND $u != "#") {
或:
if(strpos('$', $u) === FALSE AND strpos("{", $u) === FALSE AND $u != "#") {
答案 1 :(得分:1)
你已经改掉了strpos的论据。
int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
只需交换它们,它应该按预期工作。
答案 2 :(得分:0)
$u = 'services.php';
if (preg_match('/[\#\$\{\}]/is', $u))
echo "Attempting {$u} echoed: ".urlencode($u);
什么都不回应。