假设我有
$url="../folder/file"
,我想找到并删除 ../
部分。
我正在使用
trim()
…
$url = trim($url,"../");
...但它给了我一个警告:
警告:trim() [function.trim]:无效的“..”范围,上一行“..”左侧没有字符
我做错了什么?
你做错的是没有阅读说明书:
使用 .. 您可以指定字符范围。
<?php
$url="../folder/file";
$url = trim($url,"\.\./");
echo $url;
?>
你可以使用 ltrim
echo ltrim("../folder/file", "./");
或
echo trim("../folder/file", "./");
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 的第二个参数应该是要被删除的字符串,因此您不必放置“.”。两次。
trim 函数的第二个参数指定要删除的字符列表,而不是多字符字符串。 该函数将“..”解释为指定字符范围的运算符(如 a..z 或 1..5)。 您可以通过多种方式去掉“../”,但一个简单的方法是:
$parts = explode('/', $url);
array_shift($parts);
$url = implode('/', $parts);
我在 php.net 修剪页面的底部评论中找到了这个函数,它似乎可以做你想要的事情
function trimString($input, $string){
$input = trim($input);
$startPattern = "/^($string)+/i";
$endPattern = "/($string)+$/i";
return trim(preg_replace($endPattern, '', preg_replace($startPattern,'',$input)));
}