有时我们会有这样的需求,在图片路径中的图片名称前边加一个前缀,例如想实现下面的效果:
折叠展开XML/HTML 代码
- 原路径 /pc/2017/04/04/6a79757ce58fd5587b49d924c2e8f815.gif
- 新路径 /pc/2017/04/04/aaa_6a79757ce58fd5587b49d924c2e8f815.gif
这时我们可以借助正则来完成。
编写一个函数,首先正则取出图片名称,然后在图片名称前加前缀符号。
函数如下,帝国cms可以将函数放在userfun.php文件中:
折叠展开PHP 代码
- function Reimgname($data,$qz){
- preg_match("/([A-Za-z0-9]+)+.(jpg|gif|bmp|bnp|png)$/",$data,$arr);
- $oldname=$arr[0];
- $newname=$qz.'_'.$arr[0];
- $url=str_replace($oldname,$newname,$data);
- return $url;
- }
接着在模板中调用这个函数,方式如下,第一个参数为图片路径,第二个参数为增加的前缀:
折叠展开PHP 代码
- <?=Reimgname('/pc/2017/04/04/08/6a79757ce58fd5587b49d924c2e8f815.gif','88888');?>
如果是在内容页调用titlepic标题图片字段,就这样用:
折叠展开PHP 代码
- <?=Reimgname($navinfor['titlepic'],'88888');?>
当然这个函数并不限于帝国cms使用,其他php程序也是可以用的。
上面的正则只适用于英文和数字命名的图片,如果图片中含有中文怎么办呢?我们可以用下面的格式
折叠展开PHP 代码
- preg_match("/([^\/])+.(jpg|gif|bmp|bnp|png)$/",$data,$arr);