2

特定の文字列から特定の終了文字列まで、メイン文字列から特定のサブ文字列を抽出するにはどうすればよいですか。パスの下にあるように

あなたのパスは D:///path/to/required/directory/sample/subdirectory/a/b/abc/sample.text です

/sample上記のパスからから部分文字列を抽出したいabc。詳細に

/sample/サブディレクトリ/a/b/abc

他の部分文字列関数を試しましたが、成功しませんでした。

誰でもこれを手伝ってもらえますか?

私はphp.netサイトで与えられた例の1つを試しました

function reverse_strrchr($haystack, $needle, $trail)
{
        return strrpos($haystack, $needle) ? substr($haystack, 0, strrpos($haystack, $needle) + $trail) : false;
}

しかし、それは私にパスの下を与えますが、私は最初から/sample最後まで始めたいです

あなたのパスは D:///path/to/required/directory/sample/subdirectory/a/b/abc です

4

2 に答える 2

2

私はあなたがこれを好むと思います。必要なものは適切です。

メイン文字列は次のとおりです: D:///path/to/required/directory/sample/subdirectory/a/b/abc/sample.text

"/sample" から抽出を開始したい (最初の "sample" 単語)

「/sample」への抽出を停止したい(最後の「サンプル」単語)

次の文字列を Answer "/sample/subdirectory/a/b/abc/sample" として返します。

$mainstr = "D:///path/to/required/directory/sample/subdirectory/a/b/abc/sample.text";
$needle = "/sample";
$trail  = "/sample";

echo $this->reverse_strrchr($mainstr, $needle, $trail);

関数の定義は次のとおりです。

function reverse_strrchr($haystack, $needle, $trail)
{
    $start  = strpos($haystack, $needle);
    $total  = strrpos($haystack, $trail) - strpos($haystack, $needle) + strlen($trail);
    $result = substr($haystack, $start, $total);
    return $result;
}
于 2013-09-26T08:45:37.867 に答える