2012-05-29 2 views
0

Так что я пытаюсь найти несколько специальных символов, таких как {, $ в строке, возвращаемой DOM элементаFinding знак доллара с StrPos

Когда я бегу

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

Если вы ищете символ, попробуйте: 'if (strpos (" $ ", $ u)! == FALSE И strpos (" {", $ u)! == FALSE AND $ u! =" # ")' –

+0

Каков ваш вопрос? –

+0

Да, в чем вопрос. –

ответ

1

Вы отменил аргументы StrPos.

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

Просто поменять их вокруг, и он должен работать, как задумано.

+0

О боже! Не могу поверить, что я совершил эту ошибку. Спасибо! –

1

$ - специальный символ в строке с двойными кавычками. Вам нужно избежать этого с помощью обратной косой черты или использовать одинарные кавычки.

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

или:

if(strpos('$', $u) === FALSE AND strpos("{", $u) === FALSE AND $u != "#") { 
+0

'echo" $ ";' вы попробовали? –

+0

Как указал Бен, у меня были аргументы в неправильном порядке. Глупая ошибка –

0
$u = 'services.php'; 

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

не будет эхом ничего.