如何用正则表达式替换一串由变量组成的字符串,同时要保留其中一部分变量

想用正则表达式替换一串由变量组成的字符串。

原字符串格式:
'io_1/'.$id.'_'.date("ymdHis").$ext

说明:
$id是纯数字,0到10000之间。 这个要保留。
date("ymdHis"),就是日期时分秒。这个要保留。
$ext是格式后缀,例如.png。这个要替换为.jpg

例如这个原字符串:
io_1/2_191013120412.png

例如以上例子要被替换为:
ic_5/2_191013120412.jpg
目标需求:io_1替换为ic_5,同时$ext替换为.jpg,但中间的id和日期时分秒要保留。

要求是不要分开替换,避免误杀了其他内容。例如我现在这样分开替换,就会出错。

$pattern_io='/cn\/io_1\//i;
$video_page_content=preg_replace($pattern_io,'cn/ic_5/',$video_page_content);
$pattern_ext='/\.jpeg|\.png|\.gif/i'; 
$video_page_content=preg_replace($pattern_ext,'.jpg',$video_page_content);`
阅读 301
评论 2019-10-13 提问
    1 个回答
    <?php
    $string = 'io_1/2_191013120412.png';
    $pattern = '/[^\/]+(\/[\d_]+\.)\w+/i';
    $replacement = 'ic_5'.'$1'.'jpg';
    echo preg_replace($pattern, $replacement, $string);
    ?>
    评论 赞赏 2019-10-14
      七牛云存储问答
      合作问答

      七牛云存储 联合 SegmentFault 共同推出技术问答专区,为开发者们提供社区支持和帮助。在这里,你将直接...