【PHP】ある文字列から指定した文字までの部分文字列を取得する

<?php

function substrUntilSpecified(string $str, string $specified)
{
    return substr($str, 0, strrpos($str, $specified));
}

echo substrUntilSpecified('aaa$bbb&ccc#ddd$eee', '$'); // aaa$bbb&ccc#ddd

strrpos関数を使って、指定文字が最後に現れる位置を取得。
それをsubstr関数に渡して、その位置までの部分文字列を取得する。

なんか必要に迫られて似たような処理を書いたのでメモ。

ちなみに、PHPには、あるファイルへのパスから親ディレクトリのパスだけを取得するdirnameっていう関数があるので、そういう用途には素直にそっちを使いましょ。

<?php

echo dirname('aaa/bbb/ccc/ddd/hoge.txt'); // aaa/bbb/ccc/ddd