0

所以我试图在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 但仍然没有运气!

4

3 回答 3

1

您已经颠倒了 strpos 的论点。

int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )

只需交换它们,它应该可以按预期工作。

于 2012-05-29T15:48:08.217 回答
1

$ 是双引号字符串中的特殊字符。您需要使用反斜杠对其进行转义或使用单引号。

if(strpos("\$", $u) === FALSE AND strpos("{", $u) === FALSE AND $u != "#") {

或者:

if(strpos('$', $u) === FALSE AND strpos("{", $u) === FALSE AND $u != "#") {
于 2012-05-29T15:36:58.993 回答
0
$u = 'services.php';

if (preg_match('/[\#\$\{\}]/is', $u))
        echo "Attempting {$u} echoed: ".urlencode($u);

不会有任何回应。

于 2012-05-29T15:48:24.030 回答