我有一个很大的字符串,我想提取.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;
?>发布于 2013-06-14 07:42:49
我假设您的链接将始终具有相同数量的斜杠,您可以将其分解为一个数组并输出正确的元素,然后使用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-galaxyLive Sample
发布于 2013-06-14 07:37:18
您可以使用regexp,但这很无聊。
可以将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);可能到处都是,检查一下。
发布于 2013-06-14 07:39:15
我将使用正则表达式:
$pattern = '#/(.*)\.ism/#U';
$matches = array();
$found = preg_match($pattern, $string, $matches);
if (1 === $found) {
$your_desired_string = $matches[1];
} else {
// not found
}https://stackoverflow.com/questions/17098938
复制相似问题