PHP trim () проблема - PullRequest
       4

PHP trim () проблема

4 голосов
/ 22 февраля 2012

Допустим, у меня есть $url="../folder/file", и я хочу найти и удалить часть ../.

Я использую trim()

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

… но это даетпредупреждение:

Предупреждение: trim () [function.trim]: недопустимый диапазон «..», нет символа слева от «..» в строке выше

Что я сделал не так?

Ответы [ 5 ]

6 голосов
/ 22 февраля 2012

что вы сделали неправильно, не удалось прочитать руководство:

С помощью .. вы можете указать диапазон символов.

<?php
$url="../folder/file";
$url = trim($url,"\.\./");
echo $url;
?>
2 голосов
/ 22 февраля 2012

вы можете использовать ltrim

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

или

echo trim("../folder/file", "./");
1 голос
/ 22 февраля 2012

В функции обрезки есть специальный синтаксис из 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);

Второй аргумент для обрезки должен быть строкой символов, которые будут удалены, поэтому вам не нужно ставить '.' в два раза.

0 голосов
/ 22 февраля 2012

Я нашел эту функцию в нижних комментариях страницы обрезки на php.net, которые, кажется, делают то, что вы хотите

function trimString($input, $string){
        $input = trim($input);
        $startPattern = "/^($string)+/i";
        $endPattern = "/($string)+$/i";
        return trim(preg_replace($endPattern, '', preg_replace($startPattern,'',$input)));
} 
0 голосов
/ 22 февраля 2012

Второй аргумент функции обрезки указывает список символов для удаления, а не многосимвольную строку.Функция интерпретирует '..' как оператор, задающий диапазон символов (например, a..z или 1..5).Вы можете удалить '../' несколькими способами, но один из простых:

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