如何以特定方式匹配包含 ID 的文件名?

How can I match a filename containing an ID in a specific way?

我有图像文件名,我正试图通过名称中包含的一些 id($id) 找到它们。

文件名始终具有相同的结构:

something-$id(optional: numbers)(optional: -something).jpg

现在我想匹配所有文件名,其中包含 id 并且格式如上文所述。

我尝试了以下方法来找到带有 strpos() 的 ID:

$s = substr($file, strpos($file, $id), strlen($id));

但这也会找到 id,即使它前面有数字,例如$id = 230 并且文件名包含 2230。但如上格式所述,id前不能有任何数字。

那么我是否可以在没有正则表达式的情况下执行此操作来查找包含特定格式的 ID 的文件名,或者我应该使用正则表达式吗?如果是,如何使用?

这里的正则表达式更灵活,所以这样的东西适合你:

$pattern = "/^.*-$id(\d*)?(-.*)?\.jpg$/";

然后您可以简单地将其与 preg_match() 一起使用,例如

if(preg_match($pattern, $input)){
    //It matches
}