замена цифр и слов - PullRequest
       26

замена цифр и слов

0 голосов
/ 17 августа 2011

как я могу изменить строку из этого паттерна «название сезона 1 эпизод 2», на = «имя S01E02» - но если есть эпизод более 10, как «сезон 1 имя 15 эпизод», то только сезон изменится, япопробуйте сделать это:

<?php
$trans = array(
    ' season'   =>      ' S',
    ' 1'        =>      ' 01',
    ' 2'        =>      ' 02',
    ' 3'        =>      ' 03',
    ' 4'        =>      ' 04',
    ' 5'        =>      ' 05',
    ' 6'        =>      ' 06',
    ' 7'        =>      ' 07',
    ' 8'        =>      ' 08',
    ' 9'        =>      ' 09',
    ' episode'      =>      ' E'
);
$q = strtr($q, $trans);


$trans = array(
    'S '        =>      'S',
    ' E '       =>      'E'
);
$q = strtr($q, $trans);
?>

Ответы [ 2 ]

2 голосов
/ 17 августа 2011
$string = 'name season 1 episode 2';
if (preg_replace('/(.*?) season (\d+) episode (\d+)/', $string, $matches) {
     $new_name = sprintf('%s S%02dE%02', $matches[1], $matches[2], $matches[3]);
}

должен сделать new_name = 'name S01E02', при условии, что ваши имена соответствуют форматированию и внутренней структуре.

0 голосов
/ 17 августа 2011
$original_string = "some_thing season 1 episode 9";
preg_replace("/([^ ]*) season ([\d]) episode ([\d])/", "$1 S0$2E0$3", $original_string);
...