2015-06-13 3 views
0

У меня есть некоторые файлы rar, которые im используют PHP для извлечения содержимого. Однако некоторые из файлов имеют пространство непосредственно перед расширением, и я не могу понять, как удалить Это.Удалите все пробелы после последнего символа и до конечной точки

Пример:

This is a file.name (Testing) .rar 

Я хочу удалить пространство только после того, как) и .rar, но я не хочу, чтобы удалить какой-либо другой, как в file.name

Возможно ли это ?

+0

можно использовать с regex и 'preg_replace', но если это всегда' .rar', вы можете заменить последний '.rar' '(пробелом) на' .rar'' (без пробела) – twentylemon

+0

есть любой из предложенных ответов решил проблему? если да, не возражаете ли вы принять/голосовать? http://stackoverflow.com/help/why-vote – stj

ответ

1

Вы можете использовать следующее регулярное выражение для соответствия:

\s*(?=(?:\.[^.]+)?$) 

И заменить '' (пустая строка)

См DEMO

0

Без регулярных выражений:

$filename="This is a file.name (Testing) .rar"; 
if ($dot=strrpos($filename,".")) { 
    $filename=trim(substr($filename,0,$dot)).substr($filename,$dot); 
} 
0

Следующая код использует PCRE для замены пробелов между последними непробельный символ перед окончательной точкой и конечной точкой:

$filename = "This is a file.name (Testing) .rar"; 
echo preg_replace("/^(.*?)\s*(\.[^\s\.]+)$/", "\\1\\2", $filename); 

// will output: This is a file.name (Testing).rar 

Ограничения: расширение файла сами не должен содержать пробела.

Смежные вопросы