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

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

原字符串格式:
'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);`
阅读 2.8k
1 个回答
<?php
$string = 'io_1/2_191013120412.png';
$pattern = '/[^\/]+(\/[\d_]+\.)\w+/i';
$replacement = 'ic_5'.'$1'.'jpg';
echo preg_replace($pattern, $replacement, $string);
?>
推荐问题
logo
七牛云问答
子站问答
访问
宣传栏