如何从主字符串中将特定字符串从特定字符串提取到特定结束字符串。就像我在路径下面
从上面的路径你的路径是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
答案 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"