You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP 7.1正则表达式排除WordPress旧版缩放图片需求

解决PHP 7.1下用preg_grep排除WordPress缩放图的问题

嘿,我完全懂你的痛点——手动区分WordPress缩放图和命名相似的原图确实麻烦,而且还不能用插件重建,只能靠正则来搞定。下面给你一套靠谱的方案,完美适配PHP 7.1:

核心思路

WordPress自动生成的缩放图命名规则是固定的:[原图文件名]-[宽度]x[高度].[后缀],比如sunset-800x600.jpg。我们需要用负向前瞻正则来匹配那些不包含这种缩放标记的文件,再通过preg_grep筛选出结果。

具体实现代码

// 示例文件列表(替换成你的实际文件数组)
$imageFiles = [
    'lake-view.jpg',          // 原图:保留
    'lake-view-1200x800.jpg', // 缩放图:排除
    'my-cat-photo.jpg',       // 带连字符的原图:保留
    'my-cat-photo-400x300.jpg', // 缩放图:排除
    'event-2024.jpg',         // 含数字但非尺寸格式:保留
    'logo.png',               // 原图:保留
    'logo-512x512.png'        // 缩放图:排除
];

// 正则表达式:匹配不包含 "-数字x数字." 的文件名
$excludeScaledPattern = '/^(?!.*-\d+x\d+\.).+$/';

// 用preg_grep筛选出符合条件的原图
$originalImages = preg_grep($excludeScaledPattern, $imageFiles);

// 查看结果
print_r($originalImages);

正则表达式详解

让你明白每个部分的作用,方便后续调整:

  • ^:锚定字符串的开始位置
  • (?!.*-\d+x\d+\.):负向前瞻断言,核心逻辑就在这:
    • .*:匹配任意数量的任意字符(覆盖文件名前半部分)
    • -\d+x\d+:匹配WordPress缩放图的标记:连字符+一串数字+x+一串数字
    • \.:转义后的点(因为正则里的.默认匹配任意字符,这里要匹配文件名里的实际点)
    • 整个断言的意思是:这个字符串里不存在符合缩放标记的片段
  • .+$:匹配从断言位置到字符串结尾的所有字符(也就是完整的原图文件名)

边界情况说明

  • 如果你的原图里有类似project-2024x2025.jpg这种带数字x数字但不是尺寸的文件名,这个正则会误判——但这种情况非常少见,WordPress也不会生成这种命名的缩放图。如果真遇到,可以给正则加个后缀限制,比如只匹配图片后缀:/^(?!.*-\d+x\d+\.(jpg|jpeg|png|gif)).+\.(jpg|jpeg|png|gif)$/
  • PHP 7.1完全支持这个正则语法,不用担心里版本兼容性问题

内容的提问来源于stack exchange,提问作者CodeMilitant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:00:10