Вопрос-Ответ по php

Печать RSS
6495
Кураторы темы:

Ж

Пацак
0
Ошибочкка!!! Нужно получить
<?php
$file = "temp";
?>
Ж

Пацак
0
разобралсяsmile
<?php
$dir = "temp/img/9999/5555/////6666/add-chat.png";
$dir = preg_replace ("/([\/{*}]+)/is", '/', $dir);
$last_dir = preg_replace ("/(.*)\/.*\/.*/is", '$1', $dir); 
echo 'Род. каталог: <b>'.$last_dir.'</b>';
//выведет temp/img/9999/5555
?>
P.S. Спасибо .::lugaro::.
А

Чатланин
0
^ o_O http://php.net/explode .... print $array[0]; // 'temp'
Изменил: Алексей (28.02.2010 / 12:00)
Ж

Пацак
0
2870. МегабиТ, ^ o_O читай внимательней! Твой вариант не катит ни куда!
А

Чатланин
0
MaNGOS cms (Сегодня / 12:12)
2870. МегабиТ, ^ o_O читай внимательней! Твой вариант не катит ни куда!
почему это не катит? что просил то и получил

MaNGOS cms
Ошибочкка!!! Нужно получить
<?php
$file = "temp";
?>
Изменил: Алексей (28.02.2010 / 16:40)
О

Землянин
0
MaNGOS cms , что за странный путь к файлу
$file = "temp/img//////add-chat.png";
?
К чему столько повторяющих слешей?
А

Пацак
0
function strip_double_slashes($str){
    while(strpos($str,'//')!==false){
      $str=str_replace('//','/',$str);
    };
    return $str;
};
Самы простой пример, если нет хороших знаний регулярок (как у меня smile )
Ж

Пацак
0
Мне это нужно для фильтрации переменной $_GET['dir'] полученную от юзера. Она должна быть правильного формата, т.е. не должна быть такой $file = "temp/img//////add-chat.png"; для этого нужна регулярка которая удалит лишние слеши, не пропустит запросы типа /,./,../,.,.., вот для чего это мне нужну. И рпи этом как вы поняли путь(адрес) динамический.
Ж

Пацак
0
<?php
function updir($dir) {
return preg_replace ("/(.*)\/.*/", '$1', $dir); 
}
function del_slash($dir){ 
$dir = preg_replace ("/^\/+$/", 'temp', $dir);
$dir = preg_replace ("/([\/{*}]+)/is", '/', $dir);
return  $dir;
}
$dir = empty($_GET['d']) ? 'temp' : del_slash($_GET['d']);
if (preg_match("/\./", $dir)) 
 { 
   exit('Хакерам тут не место!'); 
 }
else 
 { 
          ... 
 }
if($dir != "temp") 
 {
   echo '<a href="?d='.updir($dir).'">Назад</a>';
 }
?>
Что скажите?
Изменил: Жека (28.02.2010 / 18:56)

2000 лет д.н.э.
0
if(is_dir($dir)){
логика рулит
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск