#7.11
TVシリーズのエピソードをからに変換できるようにしたいと思いますS07E11
たとえば、文字列Monk #7.11
orFamily Guy #5.6
があり、正規表現/関数を適用して、代わりにMonk S07E11
orを受け取りたいとしますFamily Guy S05E06
。
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
これにより、入力を変換するために使用される関数コールバックを提供できます。
デモ。
<?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
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
ここでこのコードをテストします。