|
|
|
| Вообщем такая проблема есть, строка: str/str2, всё бы хорошо, да только бы не получилось так:
str/str2/...////, как можно отловить все ..//?
Если через рег. выражение, то можете написать его плз:) | |
|
|
|
|
|
|
|
для: Lenux
(28.08.2005 в 10:46)
| | Не очень понятно, нужно отлавливать именно str/str2/...//// или str/str2/.../../../../ или str/str2///// и что делать в случае, если вхождение найдено, вырезать часть пути или останавливать программу? | |
|
|
|
|
|
|
|
для: cheops
(28.08.2005 в 11:32)
| | Ситуация такая для нормального функционирования скрипта, идёт путь:
&dir=str/str2, может быть нормальным, Не нормально:
$dir=str/str2/...////././../, и вот надо както убрать "лишнее" ...////./ и т.д.
Что бы юзер не мог сменить папку стояющую выше str/str2, улавливаешь?
Допустим есть папки:
str вней str2, нормально, что бы юзать папку str2 надо ввести, наподобии: &dir=str/str2. Но есть же в России Advanced User, которые например побалуются: &dir=str/str2/../ и попадут выше, но так же будет работать и ....///. Улавливаешь?
Почему то у меня не получилось отлавливать это через
$dir=eregi_replace('^\.(.\/){1,}\$', '', $dir); | |
|
|
|
|
|
|
|
для: Lenux
(28.08.2005 в 12:07)
| | В строке, которой будет производится замена, есть ещё что-нибудь, кроме "&dir=str/str2/...////././../" - т.е. имеется ли http:// и т.п. или строка начинается с &? | |
|
|
|
|
|
|
|
для: cheops
(28.08.2005 в 12:13)
| | Выглядит конечно несколько многоэтажно, но результат верный:
<?php
$str = "str/str2/...////././../";
if(substr_count($str,"/") > 1)
$str = substr($str,0,strpos($str,"/",strpos($str,"/")+1));
echo $str;
?>
|
| |
|
|
|