Что противоположно функции strrchr?

Я хочу удалить все символы после последней конкретной строки.
Для этой функции мне нужно противоположность strrchr функция.

Например, я хочу удалить все символы после последнего «.» из «Hello.World.pdf». Но с strrchr Я могу удалить только «Hello.World» перед «.»!

Я хочу что-то вроде этого кода:

<?php
echo strrchr("Hello.World.pdf" , "." , true);
?>

Но этот код не работает!

0

Решение

Если вы имеете дело с именами файлов, которые могут иметь различные расширения, и вы хотите удалить расширение, вы можете получить расширение, используя pathinfo() а затем использовать str_replace() чтобы избавиться от этого:

$filename  = 'Hello.World.pdf';
$extension = pathinfo($filename, PATHINFO_EXTENSION);
$filename  = str_replace('.' . $extension, '', $filename);
echo $filename; //Hello.World

Больше информации о PathInfo а также str_replace

0

Другие решения

Попробуйте следующее:

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));
0

Так как вы заинтересованы в именах файлов и расширениях; junkstu почти было, но вы можете просто использовать PATHINFO_FILENAME чтобы получить имя файла без расширения:

echo pathinfo("Hello.World.pdf", PATHINFO_FILENAME);
0
По вопросам рекламы [email protected]