gpt4 book ai didi

php - 基于内容的不同替换

转载 作者:行者123 更新时间:2023-12-03 19:16:12 25 4
gpt4 key购买 nike

我需要根据值更改后缀。我的字符串是一个数字,后跟特定的单词/字母。如果数字是 24、36、48、72 或 96,并且后跟小时、小时、小时、小时或小时,则将字母更改为 HR。

例如
24 小时变为 24HR 或
24 小时变成 24 小时

但是,如果数字不是 24、36、48、72 或 96,则将字母更改为 ET

240 小时变成 240ET 或
35 小时变成 35ET

$re = '/(24|36|48|72|96)(hours|hour|hrs|hr|h)/mi';
$subst = '$1HR';
$iText = preg_replace($re, $subst, $iText);

这部分有效,但我不知道如何添加将文本更改为 FH 的其他选项。这可以通过使用正则表达式完成吗?我怀疑它可以,正则表达式的力量是惊人的,我只是不太擅长它。

最佳答案

您可以使用

$rx = '~\b(?:(24|36|48|72|96)|(\d+))(h(?:(?:ou)?rs?)?)\b~i';
preg_replace_callback($rx, function($m) {
return !empty($m[1]) ? $m[1] . 'HR' : $m[2] . 'ET';
}, $s)

PHP demoregex demo .

详情
  • \b - 字边界
  • (?:(24|36|48|72|96)|(\d+)) - 匹配两个选项之一的非捕获组:
  • (h(?:(?:ou)?rs?)?) - 第 2 组:h ,然后是可选 ou 的可选序列,然后 r ,然后是可选的 s
  • \b - 字边界。

  • 如果第 1 组匹配,则 HR后缀添加到第 1 组中捕获的号码,否则, ET添加到第 2 组中捕获的号码。

    Full PHP demo :
    $strs = ['Time 24hours','Time 36hour','Time 72hr','Time 96h','Time 24hrs','Time 35h'];
    $rx = '~\b(?:(24|36|48|72|96)|(\d+))(h(?:(?:ou)?rs?)?)\b~i';
    foreach ($strs as $s) {
    echo preg_replace_callback($rx, function($m) {
    return !empty($m[1]) ? $m[1] . 'HR' : $m[2] . 'ET';
    }, $s) . PHP_EOL;
    }
    // => Time 24HR
    // Time 36HR
    // Time 72HR
    // Time 96HR
    // Time 24HR
    // Time 35ET

    关于php - 基于内容的不同替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60513940/

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