我不是专业人士,但我正在尝试使用WordPress的webp图像。
我有一个名为Rj Webp Converter的插件,它将图像转换为webp格式,然后我使用此函数将jpg,jpeg和png等扩展名替换为webp。
function callback($buffer) {
if(!is_admin() && $GLOBALS['pagenow'] != 'wp-login.php') {
$buffer = str_replace('.jpg','.webp',$buffer);
$buffer = str_replace('.jpeg','.webp',$buffer);
$buffer = str_replace('.png','.webp',$buffer); }
return $buffer; }
function buffer_start() { ob_start("callback"); }
function buffer_end() { ob_end_flush(); }
add_action('after_setup_theme', 'buffer_start');
add_action('shutdown', 'buffer_end');
但是有一个问题。 上面的代码替换了每个图像文件。 我想替换仅在wp-content / uploads / ...目录中的文件。
感谢任何帮助。 :)
答案 0 :(得分:0)
这应该有效。
<强> REGEX 强>
<?php
$re = '/(.*(?<=\.)(?:jpg|jpeg|png)(?=$))/m';
$str = 'test.jpg
testing.png
test.jpeg';
preg_match_all($re, $str, $matches);
// Print the entire match result
print_r($matches);
?>
PHP 您应该使用foreach将$ filename替换为$ matches 。
function replace_extension($filename, $new_extension) {
$info = pathinfo($filename);
return $info['filename'] . '.' . $new_extension;
}