проблемма со слешами в strrpos на php5

kos

Новичок
проблемма со слешами в strrpos на php5

функция
strrpos($_SERVER["SCRIPT_FILENAME"],"\\")
в php4 работала коректно.
а php5.0.4.4
ничего не находит, с другими символами все нормально.
Использовать регулярки не хочется, да и разобраться в чем дело надо.
Подкажите плз в чем может быть дело.
 

kos

Новичок
tony2001
var_dump сообшает только результат есть\нет, а мне нужно нужен именно индекс вхождения, и нужно разобраться из-за чего не работает?
В коде подобное используется часто и входнын данные не всегда однозначны
 

Фанат

oncle terrible
Команда форума
kos
ты не понял.
тебя не просили писать здесь свои рассуждения. они никого не интересуют.
тебе было велено привести здесь результат выполнения этого кода.
потрудись исполнить
 

kos

Новичок
извиняюсь не так понял
string(32) "D:/WebServer/htdocs/var_dump.php" bool(false)
 

tony2001

TeaM PHPClub
ответ, собственно, очевиден.
strrpos() ничего не находит, ибо в этой строке нет символа \
 

kos

Новичок
есть символ / на nix будет \ и ранше это роботало

strrpos($_SERVER["SCRIPT_FILENAME"],"\/")
тоже ничего не находит

PHP:
echo$_SERVER["SCRIPT_FILENAME"]."<br>";
$n=strrpos($_SERVER["SCRIPT_FILENAME"],"//");
echo$n."<br>";
var_dump($_SERVER["SCRIPT_FILENAME"]);
var_dump(strrpos($_SERVER["SCRIPT_FILENAME"],"\\"));
на машине с php4.3.3 выводит

d:/webserver/www/var_dump.php
16
string(29) "d:/webserver/www/var_dump.php" bool(false)

а с 5.0.4.4
D:/WebServer/htdocs/var_dump.php

string(32) "D:/WebServer/htdocs/var_dump.php" bool(false)

и там и там false, но в четверке вхождение всё таки отображается
может это зависьт от каких-то настроек
apach тоже отличается 1.3 в первом случае и 2 во втором
 

tony2001

TeaM PHPClub
>есть символ / на nix будет \ и ранше это роботало
загадочная фраза.
а неё масса вариантов прочтения:
1) "есть символ /, на nix будет \ и ранше это роботало"
2) "есть символ / на nix, будет \ и ранше это роботало"
3) "есть символ, / на nix будет, \ и ранше это роботало"

и что интересно - ни один из вариантов не несет смысловой нагрузки..

>strrpos($_SERVER["SCRIPT_FILENAME"],"\/")
что такое "\/" ?
конечно, не находит - нет там подстроки "\/".

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

и замени, наконец, двойные кавычки на одинарные, раз уж ты не знаешь что надо слэшить, а что не надо.
 

kos

Новичок
извиняюсь что-то меня кроет, запутался я со слешами

но проблемма не только в этом (уверенн так как она возникла при переносе кода активно используюшегося 2 месяца на php5)

повторюсь есть:
PHP:
echo$_SERVER["SCRIPT_FILENAME"]."<br>";
$n=strrpos($_SERVER["SCRIPT_FILENAME"],"//");
echo$n."<br>";
var_dump($_SERVER["SCRIPT_FILENAME"]);
var_dump(strrpos($_SERVER["SCRIPT_FILENAME"],"//"));
на машине с php4.3.3 выводит
d:/webserver/www/var_dump.php
16
string(29) "d:/webserver/www/var_dump.php" int(16)

на машине с php5.0.4.4 выводит
D:/WebServer/htdocs/var_dump.php

string(32) "D:/WebServer/htdocs/var_dump.php" bool(false)
 

tristram

Guest
PHP:
var_dump(strrpos($_SERVER["SCRIPT_FILENAME"],DIRECTORY_SEPARATOR));
;)
 
Сверху