Я хочу удалить все символы после последней конкретной строки.
Для этой функции мне нужно противоположность strrchr
функция.
Например, я хочу удалить все символы после последнего «.» из «Hello.World.pdf». Но с strrchr
Я могу удалить только «Hello.World» перед «.»!
Я хочу что-то вроде этого кода:
<?php
echo strrchr("Hello.World.pdf" , "." , true);
?>
Но этот код не работает!
Если вы имеете дело с именами файлов, которые могут иметь различные расширения, и вы хотите удалить расширение, вы можете получить расширение, используя pathinfo()
а затем использовать str_replace()
чтобы избавиться от этого:
$filename = 'Hello.World.pdf';
$extension = pathinfo($filename, PATHINFO_EXTENSION);
$filename = str_replace('.' . $extension, '', $filename);
echo $filename; //Hello.World
Больше информации о PathInfo а также str_replace
Попробуйте следующее:
echo substr('Hello.World.pdf', 0, strrpos('Hello.World.pdf', '.'));
Материал для чтения:
http://php.net/manual/en/function.strrpos.php
http://php.net/manual/en/function.substr.php
Замечания:
Я рекомендую вам проверить, что strrpos фактически возвращает верное значение.
РЕДАКТИРОВАТЬ:
$haystack = 'Hello.World.pdf';
$needle = '.';
$pos = strrpos($haystack, $needle);
echo ($pos === false ? $haystack : substr($haystack, 0, $pos));
Так как вы заинтересованы в именах файлов и расширениях; junkstu почти было, но вы можете просто использовать PATHINFO_FILENAME
чтобы получить имя файла без расширения:
echo pathinfo("Hello.World.pdf", PATHINFO_FILENAME);