调用trim()时出现“无效的‘..’范围,‘..’左侧没有字符”错误

问题描述 投票:0回答:5

假设我有

$url="../folder/file"
,我想找到并删除
../
部分。

我正在使用

trim()

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

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

警告:trim() [function.trim]:无效的“..”范围,上一行“..”左侧没有字符

我做错了什么?

php trim
5个回答
7
投票

你做错的是没有阅读说明书:

使用 .. 您可以指定字符范围。

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

2
投票

你可以使用 ltrim

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

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

1
投票

php.net/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 的第二个参数应该是要被删除的字符串,因此您不必放置“.”。两次。


0
投票

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

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

0
投票

我在 php.net 修剪页面的底部评论中找到了这个函数,它似乎可以做你想要的事情

function trimString($input, $string){
        $input = trim($input);
        $startPattern = "/^($string)+/i";
        $endPattern = "/($string)+$/i";
        return trim(preg_replace($endPattern, '', preg_replace($startPattern,'',$input)));
} 
© www.soinside.com 2019 - 2024. All rights reserved.