<分区>
这可能是一个简单的,但我搜索后无法弄清楚。我设法以 20 种不同的方式改变输出,但没有一种是我想要的 =D
<?php
$text = <<<DATA
Show.Name.2x05.HDTV.x264
Show.Name.2x06.HDTV.x264
Show.Name.2x07.HDTV.x264
Show.Name.2x08.HDTV.x264
Show.Name.2x09.HDTV.x264
DATA;
$text = preg_replace('/([0-9]{1,2})x([0-9]{2})/e',
'sprintf("S%02dE%02d", $1, $2)', $text);
echo $text;
?>
输出
Show.Name.S02E05.HDTV.x264
Show.Name.S02E06.HDTV.x264
Show.Name.S02E07.HDTV.x264
Show.Name.S02E00.HDTV.x264
Show.Name.S02E00.HDTV.x264
如您所见,它将我的 08 和 09 变成了 00,我最好的猜测是这与 PHP 认为我试图指示八进制有关,因为它是一个 base8 系统,它只喜欢 0-7。我不认为“字符串”中的前导零会表明这一点?如何更改我的代码以接受 08 和 09 但不将它们更改为 00?我尝试了几种方法来尝试逃脱它,但我被卡住了。