如何从字符串中删除点点斜杠?

时间:2017-07-14 03:53:14

标签: php

我想删除URL字符串中的所有点点斜线,以便用户无权访问父级目录。我可以拥有的是../../../file,以下方法可以安全使用吗?

$str = '../../../file';
$str = str_replace('..','', ltrim($str,'/'));
编辑:感谢您的建议和解答,但我也想知道为什么不使用此代码?它不够安全吗?它可以被剥削吗?

4 个答案:

答案 0 :(得分:2)

您可以像这样使用preg_replace:

$string = '../../../file';
echo preg_replace("/(\.\.\/)/","", $string);

答案 1 :(得分:1)

$str = '../../../file';
$str = str_replace('../','', $str);
echo $str;

答案 2 :(得分:0)

我不清楚您的问题,我怀疑您需要重写您的网址。 如果是这样你可以使用.htaccess文件重写它

RewriteEngine On
RewriteRule ^$ /
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /$1

或者您只想从$ str中删除子文件夹 你只需使用以下代码

$str = preg_replace('/..\//', '',  $str); 

$str = str_replace('../','', $str);

答案 3 :(得分:0)

我们也可以使用多个字符选择:

echo str_replace(array('..', '/'), ' ', $string);