寻找与strpos的美元的符号

时间:2012-05-29 15:32:10

标签: php

所以我试图找到几个特殊字符,例如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但仍然没有运气!

3 个答案:

答案 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);

什么都不回应。