Hello,

"Galkov Vladimir" <[EMAIL PROTECTED]> wrote in message
[EMAIL PROTECTED]">news:[EMAIL PROTECTED]...
> Need to remove all "../"   "/.."  from user inputing string to prevent him
> walking and creating files&directories where I don't whant see them/him...
>
> The string:
>
>  $path =
> eregi_replace('([..]{2,})|([./]{2})|([../]{3,})|([/.]{2})|([/..]{3})', '',
> $path);
>
> works good with any  combinations ( ../../..qwert.txt  =>  qwert.txt)
untill
> somth like "/../asd/../qwert.txt" will be entered ...
(/../asd/../qwert.txt
> => asdqwert.txt).
>  So the qwestion is how upgrade regular expression to remove all this
> correctly (with all entered directory names but NOT assigned their names
to
> file name...
>
>  Must do the operation:
>  /../asd/......../qwert.txt  => qwert.txt
> but  not  => /asd/qwert.txt or asdqwert.txt.ru
> or
> /................../asd/../qwert.txt.ru  => qwert.txt.ru
> but  not  => /asd/qwert.txt.ru or asdqwert.txt.ru
>

Try this:

<?

$string = "/../asd/......../qwert.txt";

$string = preg_replace("/(\.*\/\.?)+.*?(\.*\/)?/s", "", $string);

echo $string;

?>

May need some tweaking, let me know.

~James



-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to