我有一个字符串,其中包含许多具有各种图像大小的wordpress图像名称。例如:
imgr-3sdfsdf9-266x200.png, pics-asf39-266x800.png, ruh-39-150x200.png
我需要做的是用字符串“150x150”替换这种字符串中的所有图像大小。该字符串可能包含数百个不同大小的文件名。 到目前为止,所有尺寸都采用dddxddd格式 - 3位数字后跟“x”后跟另外3位数字。我认为我不会有4位数的宽度或高度。 总是,大小就在.png扩展名之前。 所以在处理完上面提到的字符串后,它应该成为:
imgr-3sdfsdf9-150x150.png, pics-asf39-150x150.png, ruh-39-150x150.png
任何帮助将不胜感激。
答案 0 :(得分:3)
$size = 150;
echo preg_replace(
'#\d{3,4}x\d{3,4}\.#is',
"{$size}x{$size}.",
'imgr-3sdfsdf9-266x200.png, pics-asf39-266x800.png, ruh-39-150x200.png'
);
答案 1 :(得分:2)
这将是:
$string = 'imgr-3sdfsdf9-266x200.png, pics-asf39-266x800.png, ruh-39-150x200.png';
$string = preg_replace('/(\d{3}x\d{3})\./', '150x150.', $string);
- 在此我依赖大小后将.
作为文件扩展名分隔符。如果不是这样,您可能希望将其从更换条件中删除。
答案 2 :(得分:2)
使用 preg_replace ,您可以实现您想要的效果:
$pattern = '/\d+x\d+(\.png)/i';
$replace = '150x150${1}';
$newStr = preg_replace($pattern, $replace, $initialStr);
另请参阅此 short demo 。
简短说明
RegEx-pattern:
/\d+x\d+(\.png)/i
\_/V\_/\_____/ V
_________ | | | | | ________________
|Match one|________| | | | |__|Make the search |
|or more | ______| | |___ |case-insensitive|
|digits | | | |
_______|_ ____|____ _|_______________
|Match the| |Match one| |Match the string |
|character| |or more | |'.png' and create|
|'x' | |digits | |a backreference |
Replacement string:
150x150${1}
\_____/\__/
________________ | | ________________________
|Replace with the|__| |__|...followed by the 1st |
|string '150x150'| |captured backreference |
|(e.g.: ".png" or ".PNG")|