不包含WordPress缩放图像的PHP正则表达式

问题描述 投票:0回答:1

使用PHP 7.1,我需要一个正则表达式模式,它将排除旧WordPress安装中的所有缩放图像。不幸的是,一些全尺寸图像具有类似的命名法。我需要preg_grep这个功能。

示例图像数组:

[0]=>
string(70) "/wp-content/uploads/2011/05/filename3-1-100x100.png"
[1]=>
string(78) "/wp-content/uploads/2011/05/filename-1-150x150-100x100.png"
[2]=>
string(62) "/wp-content/uploads/2011/05/filename-1.png"
[3]=>
string(68) "/wp-content/uploads/2011/05/filename-100x100.png"
[4]=>
string(76) "/wp-content/uploads/2011/05/filename-150x150-100x100.png"
[5]=>
string(60) "/wp-content/uploads/2011/05/filename.png"

我需要的结果:

/wp-content/uploads/2011/05/filename-1.png
/wp-content/uploads/2011/05/filename.png

我已经尝试过消极的期待:

.*(-\d{1})?(?![-\d{3}x\d{3}]?\.(jpg|png|bmp|gif|ico)

我尝试过负面看法:

.*(?<![-\d{3}x\d{3}]\.(jpg|png|bmp|gif|ico))

我试过否定不需要的字符串:

.*(-\d)?[^-\d{3}x\d{3}]\.(jpg|png|bmp|gif|ico)

在正常情况下,我会使用插件重建新的WordPress实例的图像,但是,这个客户端有超过10,000个图像,其中许多图像没有附加到他们的WordPress帖子。这些图像仅用于其社交网络。我必须维护所有旧图像,以便任何传入的链接都不会被破坏,但我还需要重建帖子图像。不幸的是,在导出WordPress网站时,只有附加到帖子的图像包含在WXR rss导出文件中。这可能会导致数千张图像无法计算,并且需要使用插件手动添加这些图像。

php regex wordpress
1个回答
2
投票

你在正则表达式中犯了一些错误,就像用圆括号混淆括号一样。括号将定义一个字符类,而括号则打算对一个模式进行分组。否则你可能会找到一个有效的解决方案:

^(?!.*-\d{3}x\d{3}).*\.(jpg|png|bmp|gif|ico)$

Live demo

PHP代码:

print_r(preg_grep("~^(?!.*-\d{3}x\d{3}).*\.(jpg|png|bmp|gif|ico)$~", $array));
© www.soinside.com 2019 - 2024. All rights reserved.