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

  • Автор темы Автор темы kos
  • Дата начала Дата начала

kos

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

функция
strrpos($_SERVER["SCRIPT_FILENAME"],"\\")
в php4 работала коректно.
а php5.0.4.4
ничего не находит, с другими символами все нормально.
Использовать регулярки не хочется, да и разобраться в чем дело надо.
Подкажите плз в чем может быть дело.
 
tony2001
var_dump сообшает только результат есть\нет, а мне нужно нужен именно индекс вхождения, и нужно разобраться из-за чего не работает?
В коде подобное используется часто и входнын данные не всегда однозначны
 
kos
ты не понял.
тебя не просили писать здесь свои рассуждения. они никого не интересуют.
тебе было велено привести здесь результат выполнения этого кода.
потрудись исполнить
 
извиняюсь не так понял
string(32) "D:/WebServer/htdocs/var_dump.php" bool(false)
 
ответ, собственно, очевиден.
strrpos() ничего не находит, ибо в этой строке нет символа \
 
есть символ / на 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 во втором
 
>есть символ / на nix будет \ и ранше это роботало
загадочная фраза.
а неё масса вариантов прочтения:
1) "есть символ /, на nix будет \ и ранше это роботало"
2) "есть символ / на nix, будет \ и ранше это роботало"
3) "есть символ, / на nix будет, \ и ранше это роботало"

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

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

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

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

но проблемма не только в этом (уверенн так как она возникла при переносе кода активно используюшегося 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)
 
Сверху