-5

#7.11TVシリーズのエピソードをからに変換できるようにしたいと思いますS07E11

たとえば、文字列Monk #7.11orFamily Guy #5.6 があり、正規表現/関数を適用して、代わりにMonk S07E11orを受け取りたいとしますFamily Guy S05E06

4

3 に答える 3

3

使用preg_replace_callback

function convert($matches) {
  $season = str_pad($matches[1], 2, "0", STR_PAD_LEFT);
  $episode = str_pad($matches[2], 2, "0", STR_PAD_LEFT);
  return "S" . $season . "E" . $episode;
}

echo preg_replace_callback("/#(\d+)\.(\d+)/", "convert", "Monk #7.11");
// Monk S07E11  
echo preg_replace_callback("/#(\d+)\.(\d+)/", "convert", "Family Guy #5.6");
// Family Guy S05E06

これにより、入力を変換するために使用される関数コールバックを提供できます。

デモ

于 2012-09-18T12:52:02.827 に答える
2
<?php

$regex="/^([^#]+?) *#([0-9]+)\.([0-9]+)$/";
$fmt="%s S%02dE%02d\n";

$items=array(
    "Family Guy #5.6",
    "Monk #7.11",
);

foreach ($items as $one) {
    preg_match($regex, $one, $matches);
    printf($fmt, $matches[1], $matches[2], $matches[3]);
}

戻り値:

Family Guy S05E06
Monk S07E11
于 2012-09-18T13:05:35.213 に答える
1

PHPコード:

$s = 'Monk #7.11';
$p = '/^([^#]+\s)#(\d+)\.(\d+)$/e';
$r = 'sprintf("%sS%02dE%02d", "$1", "$2", "$3")';
echo preg_replace($p, $r, $s);

出力:

Monk S07E11

ここでこのコードをテストします。

于 2012-09-18T13:16:00.903 に答える