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

$は、二重引用符で囲まれた文字列内の特殊文字です。バックスラッシュでエスケープするか、代わりに一重引用符を使用する必要があります。

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 に答える
1

strposの引数を逆にしました。

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

それらを交換するだけで、意図したとおりに機能するはずです。

于 2012-05-29T15:48:08.217 に答える
0
$u = 'services.php';

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

何もエコーしません。

于 2012-05-29T15:48:24.030 に答える