我有一个大字符串,想要在.ism
和之前的斜杠/
之间提取数据。例如,我想得到:life-episode-galaxy
我当前的代码在.ism
之前提供所有数据。任何人都可以告诉我这里有什么问题,以及如何只在.ism
和斜杠/
之间获取数据?
<?
$code="media=http://somesite.com/4534543kjlkljklkjlkkljlkdsfsfo/life-episode-galaxy.ism/manifest,deliverymethod=adaptiv";
$startsAt3 = strpos($code, "/") + strlen("/");
$endsAt3 = strpos($code, ".ism", $startsAt3);
$result3 = substr($code, $startsAt3, $endsAt3 - $startsAt3);
echo $result3;
?>
答案 0 :(得分:1)
你可以使用正则表达式,但这很无聊。
您可以使用strrpos
和第3个offset
参数,使用负偏移量。
$ism_pos = strpos($code, ".ism");
$last_slash_pos_before_ism = strrpos($code, "/", $ism_pos - strlen($code));
$result = substr($code, $last_slash_pos_before_ism, $ism_pos);
可能会在这里和那里一个接一个地检查它。
答案 1 :(得分:1)
我会使用正则表达式:
$pattern = '#/(.*)\.ism/#U';
$matches = array();
$found = preg_match($pattern, $string, $matches);
if (1 === $found) {
$your_desired_string = $matches[1];
} else {
// not found
}
答案 2 :(得分:1)
我假设您的链接总是具有相同数量的斜杠/
,您可以直接跳转到数组并输出正确的元素,使用str_replace
删除不需要的数据
$code="media=http://somesite.com/4534543kjlkljklkjlkkljlkdsfsfo/life-episode-galaxy.ism/manifest,deliverymethod=adaptiv";
$array = explode("/", str_replace("//", "/", $code));
echo str_replace('.ism', '', $array[3]);
这将输出
life-episode-galaxy