最後の特定の文字列の後のすべての文字を削除したい。この関数には、strrchr
関数の反対が必要です。
たとえば、最後の「。」の後のすべての文字を削除したい。「Hello.World.pdf」より。しかし、strrchr
関数を使用すると、「.」の前の「Hello.World」しか削除できません!
このコードのようなものが欲しい:
<?php
echo strrchr("Hello.World.pdf" , "." , true);
?>
しかし、このコードは機能しません。
次のことを試してください。
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));
ファイル名と拡張子に興味があるので。jumpstuはほとんどそれを持っていましたがPATHINFO_FILENAME
、拡張子なしでファイル名を取得するために使用できます:
echo pathinfo("Hello.World.pdf", PATHINFO_FILENAME);
さまざまな拡張子を持つ可能性のあるファイル名を扱っていて、拡張子を削除したい場合は、次のようにpathinfo()
使用str_replace()
して拡張子を取得し、 を使用して削除できます。
$filename = 'Hello.World.pdf';
$extension = pathinfo($filename, PATHINFO_EXTENSION);
$filename = str_replace('.' . $extension, '', $filename);
echo $filename; //Hello.World