2

我有一个大字符串,想在它之前.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;

?>
4

3 回答 3

1

您可以使用正则表达式,但这很无聊。

您可以使用strrpos第三个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);

可能在这里和那里不一样,检查一下。

于 2013-06-13T23:37:17.567 回答
1

我会使用正则表达式:

$pattern = '#/(.*)\.ism/#U';
$matches = array();
$found = preg_match($pattern, $string, $matches);
if (1 === $found) {
    $your_desired_string = $matches[1];
} else {
    // not found
}
于 2013-06-13T23:39:14.573 回答
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

现场样品

于 2013-06-13T23:42:48.757 回答