如何从特定字符串中的字符串中提取子字符串到特定结尾?

时间:2013-09-26 07:54:34

标签: php

如何从主字符串中将特定字符串从特定字符串提取到特定结束字符串。就像我在路径下面

  

你的路径是D:///path/to/required/directory/sample/subdirectory/a/b/abc/sample.text

从上面的路径

我想从/sample提取子字符串到abc。详细

  

/样品/子目录/ A / B / ABC

我试过其他子字符串函数但没有成功。

有人可以帮我吗?

我曾尝试过在php.net网站上给出的一个例子

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

但是它给了我以下路径,但我想从/sample开始到结束

  

你的道路是   d:///路径/到/需要/目录/样品/子目录/ A / B / ABC

2 个答案:

答案 0 :(得分:2)

我想你会喜欢这个。 你需要的是正确的。

您的主要字符串是: d:///path/to/required/directory/sample/subdirectory/a/b/abc/sample.text

您想要从“/ sample”开始提取(第一个“示例”字样)

您想要停止提取到“/ sample”(最后“示例”字样)

将以下字符串作为Answer返回 “/样品/子目录/ A / B / ABC /样品”

$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;
}

答案 1 :(得分:1)

你从第0位开始。

substr($haystack, 0, strrpos($haystack, $needle) + $trail)

搜索/ sample的位置并将其替换为0。

例如:

$haystack = -- your path here --;
$result = substr($haystack, strrpos($haystack, "/sample"), strrpos($haystack, "abc"));
echo $result; // Your new "path"