gpt4 book ai didi

PHP preg_replace,拆分还是匹配?

转载 作者:行者123 更新时间:2023-12-04 04:36:55 25 4
gpt4 key购买 nike

我需要解析一个字符串并替换不符合我的媒体播放器队列正常格式的电视节目名称的特定格式。

一些例子

显示名称。 2x01 .HDTV.x264 应该是 Show.Name。 S02E01 .HDTV.x264
显示名称。 10x05 .HDTV.XviD 应该是 Show.Name。 S10E05 .HDTV.XviD

在节目名称之后,x 之前可能有 1 或 2 位数字,我希望输出始终是带有两位数字的 S,因此如果需要,请添加前导零。在 x 之后,它应该始终是一个带有两位数字的 E。

我查看了 preg_replace、split 和 match 函数的手册页,但无法弄清楚我应该在这里做什么。我可以用 /\dx\d{2}/ 匹配我想要的字符串部分所以我想首先检查字符串是否具有该模式,然后尝试弄清楚如何将部分从匹配中分离出来,但我什么也没得到。

我最擅长使用示例,因此,如果您能用示例为我指明正确的方向,那就太好了。我现在唯一的测试区域是 PHP 4 安装,所以请不要有 PHP 5 特定说明,一旦我了解发生了什么,我可能会在需要时为 PHP 5 更新它:)

最佳答案

使用 #sprintf 作为解决方案的不同方法使用 PHP4 和下面。

$text = preg_replace('/([0-9]{1,2})x([0-9]{2})/ie',
'sprintf("S%02dE%02d", $1, $2)', $text);

备注 : 使用 e修饰符自 起折旧PHP5.5 ,所以使用 preg_replace_callback()
$text = preg_replace_callback('/([0-9]{1,2})x([0-9]{2})/', 
function($m) {
return sprintf("S%02dE%02d", $m[1], $m[2]);
}, $text);

输出
Show.Name.S02E01.HDTV.x264
Show.Name.S10E05.HDTV.XviD

working demo

关于PHP preg_replace,拆分还是匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19603451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com