基本上,我想要做的是替换一个文件名,以便
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]
总有一天,我会花时间阅读整个regex参考,但它让我感到困惑。
发布于 2012-08-24 09:33:02
我认为这应该可以做到这一点(假设文件名存储在一个适当命名的变量中):
preg_replace("/([^-]+)-\d{2,4}-\d{2,4}\.(.+)/i", "$1-150-150.$2", $filename);我们在这里做什么?让我们来看看:
另一个数字:\d{2,4}
-
\d{2,4}\.(.+)
请注意,我们在步骤1和7中使用了捕获组,因此我们可以在替换中使用这些值。学习正则表达式是值得的;它们是一个强大的工具。
发布于 2012-08-24 09:31:57
我可能误解了你的问题。但是-[\d]+应该做你想做的事情。它将匹配一个短划线(-),后跟一个整数。然后,您只需将其替换为破折号和150。如果您不打算更改扩展名,则不需要匹配它。事实上,你不需要匹配任何东西,只需要匹配数字和破折号就可以完成你需要的东西。
https://stackoverflow.com/questions/12102139
复制相似问题