我怎样才能得到这个字符串的一部分?

时间:2014-05-11 15:35:20

标签: php regex string

我正在尝试创建一些电视节目的小数据库,它们的名称通常如下:

Show.Name.S01E01.Episode Name

OR

Show.Name.S01E01.Some.Stuff.Here.Episode名称

我怎样才能获得Show the Name和Season&剧集编号所以我留下了以下内容:

Show.Name.S01E01

我尝试使用以下内容,但它不像某些节目那样有效。在他们中,

explode(".", "Show.Name.S01E01.Some.Stuff.Here.Episode Name");

由于

2 个答案:

答案 0 :(得分:3)

这会让你想要你想要的东西:

<?php
function getShowInfo($str) {
  if (preg_match('/^(.+?)\.S(\d+)E(\d+)(?:.+?)?\.[^.]+$/',$str, $m))
    return $m;
  return null;
}

print_r(getShowInfo('Show Name.S01E02.Episode Name'));
print_r(getShowInfo('Show Name.S01E02.Some.Stuff.Here.Episode Name'));

示例输出:

Array
(
    [0] => Show Name.S01E02.Episode Name
    [1] => Show Name
    [2] => 01
    [3] => 02
)
Array
(
    [0] => Show Name.S01E02.Some.Stuff.Here.Episode Name
    [1] => Show Name
    [2] => 01
    [3] => 02
)

答案 1 :(得分:1)

使用explode()

$Parts = explode('.','Show Name.S01E01.Episode Name');
echo $Parts[0].'.'.$Parts[1];

输出

Show Name.S01E01

替代list()

list($ShowName, $EpisodeCode, $EpisodeName) = explode('.','Show Name.S01E01.Episode Name');
echo $ShowName.'.'.$EpisodeCode;

输出

Show Name.S01E01
小心,节目名称或剧集标题可能包含可能会给您带来问题的其他点