PHP trim()问题

时间:2012-02-22 03:25:52

标签: php trim

假设我有$url="../folder/file",我想查找并删除../部分。

我正在使用trim() ...

$url = trim($url,"../");

......但它给了我一个警告:

  

警告:trim()[function.trim]:无效' ..' -range,' ..'左边没有字符。在上面

我做错了什么?

5 个答案:

答案 0 :(得分:6)

你做错了是没有阅读手册:

  

使用..您可以指定一系列字符。

<?php
$url="../folder/file";
$url = trim($url,"\.\./");
echo $url;
?>

答案 1 :(得分:2)

你可以使用ltrim

echo ltrim("../folder/file", "./");

echo trim("../folder/file", "./");

答案 2 :(得分:1)

php.net/trim的trim函数中有一个特殊的语法允许你指定一个范围,这是解释器认为你正在做的因为'..'

// trim the ASCII control characters at the beginning and end of $binary
// (from 0 to 31 inclusive)
$clean = trim($binary, "\x00..\x1F");
var_dump($clean);

trim的第二个参数应该是一个可以被剥离的字符串,所以你不应该把'。'两次。

答案 3 :(得分:0)

trim函数的第二个参数指定要剥离的字符列表,而不是多字符字符串。该函数将'..'解释为指定字符范围的运算符(如a..z或1..5)。您可以通过多种方式删除“../”,但其中一个很简单:

$parts = explode('/', $url);
array_shift($parts);
$url = implode('/', $parts);

答案 4 :(得分:0)

我在php.net上的trim页面的底部注释中找到了这个函数,似乎可以做你想要的事情

function trimString($input, $string){
        $input = trim($input);
        $startPattern = "/^($string)+/i";
        $endPattern = "/($string)+$/i";
        return trim(preg_replace($endPattern, '', preg_replace($startPattern,'',$input)));
}