簡體   English   中英

PHP trim()問題

[英]PHP trim() issue

假設我有$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函數中有一個特殊的語法,允許你指定一個范圍,這是解釋器認為你正在做的因為'..'

// 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函數的第二個參數指定要剝離的字符列表,而不是多字符字符串。 該函數將'..'解釋為指定字符范圍的運算符(如a..z或1..5)。 你可以通過多種方式去掉'../',但一個簡單就是:

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

我在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)));
} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM