kamron shaw kamron shaw - 4 months ago 19
PHP Question

Extract a particular character from a string

I want to extract the episode number from the name of TV Series.

e.g. If it is "Game of Thrones S06E01", Then I should get 01.

What I am trying is :


  1. First see if the string contains something like "S__E__"(e.g "Blacklist S01E05")

  2. If yes, then see what's there after "E" or "e", and extract it.



But due to variation in types of inputs, I can get different names to check like :


  1. Blacklist S01E01

  2. Blacklist s01e01 (small "e" and "s")

  3. Blacklist S1E1

  4. Blacklist S01E01.mkv

  5. Se7en S01E01



and so on...

Jan Jan
Answer

Praise the power of regular expressions then:

\b(?i)S\d+E(\d+)(?i-)\b

See a demo on regex101.com.


In PHP this would be:

<?php

$data = <<<DATA
Blacklist S01E01
Blacklist s01e01 (small "e" and "s")
Blacklist S01E01.mkv
Se7en S01E01
DATA;

$regex = '~\b(?i)S\d+E(\d+)(?i-)\b~';
preg_match_all($regex, $data, $matches);
print_r($matches);
?>

And see a demo on ideone.com.


Updated: To do it in jQuery/JavaScript, you need to change the inline modifiers:

\bS[\d.]+E(\d+)\b

See a demo on regex101.com (and mind the modifiers!).