Php 如果数字为一位数,则多次替换并添加前面的0

Php 如果数字为一位数,则多次替换并添加前面的0,php,Php,我有如下字符串 Season 6, Episode 10 Season 21, Episode 10 Season 6, Episode 1 应将其转换为以下字符串 S06E10 S21E10 S06E01 我试过下面的代码 $shortseason = str_replace("Season ","S",$season); $shortseason = str_replace("Episode ","E",$shortseason); $shortseason = str_replace(

我有如下字符串

Season 6, Episode 10
Season 21, Episode 10
Season 6, Episode 1
应将其转换为以下字符串

S06E10
S21E10
S06E01
我试过下面的代码

$shortseason = str_replace("Season ","S",$season);
$shortseason = str_replace("Episode ","E",$shortseason);
$shortseason = str_replace(", ","",$shortseason);

我无法在上述代码中添加前面的0,是否有其他方法可以轻松完成此操作。

使用正则表达式:

您可以使用regex(在那些
str_replace()
之后)在该数字之前添加一个
0
,如果它是一位数字。试试这个:

$season="Season 6, Episode 10
Season 21, Episode 10
Season 6, Episode 1";

$shortseason = str_replace("Season ","S",$season);
$shortseason = str_replace("Episode ","E",$shortseason);
$shortseason = str_replace(", ","",$shortseason);

$pattern1 = '/(S)(\dE)/m';
$pattern2 = '/(E)(\d)(?:\n|$)/m';
$replacement = '${1}0$2';
$shortseason = preg_replace($pattern1, $replacement, $shortseason );
echo preg_replace($pattern2, $replacement, $shortseason );

我会使用preg_replace来执行此操作:

function convert($s) {
    return preg_replace ( '/^Season (\d+), Episode (\d+)$/e', "'S'.str_pad($1,2,'0',STR_PAD_LEFT).'E'.str_pad($2,2,'0',STR_PAD_LEFT)", $s );
}

echo convert ( "Season 6, Episode 10" ) . "\n";
echo convert ( "Season 21, Episode 10" ) . "\n";
echo convert ( "Season 6, Episode 1" ) . "\n";
输出:

S06E10
S21E10
S06E01

就是这样:试着让我知道

$str = "Season 6, Episode 10";

$arr = explode(", ", $str);

$shortseason1 = explode(" ", $arr[0]);
$shortseason2 = explode(" ", $arr[1]);

echo $short = substr($shortseason1[0], 0, 1).sprintf("%02d", $shortseason1[1]).substr($shortseason2[0], 0, 1).sprintf("%02d", $shortseason2[1]);
输出:S06E10


对其他人也一样。

你需要使用
sprintf(“%02d”,$num)
@FrayneKonok:问题是从stringokey中分别获取数字。让我帮你做。检查我的答案。如果你需要为所有人做同样的事情,那么只需使用循环。现在开始工作谢谢,但它没有为季节添加之前的0抱歉,很多错误,第1季,第1集必须是S01E01,拉桑答案正在工作,谢谢anyways@Vishnu胡奥夫。。。我编辑了我的答案,现在也可以了(试了5次之后)
)。。顺便说一句,我很高兴你找到了一个有效的解决方案。它不是添加0@Vishnu它通过str_pad添加
$str = "Season 6, Episode 10";

$arr = explode(", ", $str);

$shortseason1 = explode(" ", $arr[0]);
$shortseason2 = explode(" ", $arr[1]);

echo $short = substr($shortseason1[0], 0, 1).sprintf("%02d", $shortseason1[1]).substr($shortseason2[0], 0, 1).sprintf("%02d", $shortseason2[1]);