基本上我想做的是替换文件名以便
whatever-[xxx]-[xxx].[xxx]
变为whatever-150-150.[xxx]
所以,如果我有:
aisuiuhviu123ounsciun-174-345.JPG
变为aisuiuhviu123ounsciun-150-150.JPG
和
wuernicun-123-25.png
变为wuernicun-150-150.png
到目前为止,我已经找到了/(jpg|JPG|jpeg|JPEG|gif|GIF|png|PNG)/
但数字部分真的很混乱,基本上文件总是:
[string]-[2-4 numbers]-[2-4 numbers].[original file extension]
有一天,我会到处阅读整个正则表达式的引用,但这让我感到困惑。
答案 0 :(得分:1)
我可能会误解你的问题......但是-[\d]+
应该做你想要的事情。它将匹配短划线( - )后跟整数。然后你只需要用短划线和150替换它。如果你不打算更改它,你不需要匹配扩展。事实上,除了数字和短划线之外,你不需要匹配任何东西来完成你需要的东西。
答案 1 :(得分:1)
我认为这应该可以解决问题(假设文件名存储在适当命名的变量中):
preg_replace("/([^-]+)-\d{2,4}-\d{2,4}\.(.+)/i", "$1-150-150.$2", $filename);
我们在这做什么?我们来看看:
([^-]+)
匹配。-
。\d{2,4}
-
\d{2,4}
\.
(.+)
请注意,我们在步骤1和7中使用捕获组,以便我们可以在替换中使用这些值。学习正则表达式是值得的;它们是一个强大的工具。