我有图片文件名,我试图通过名字中包含的某个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或者我应该使用正则表达式,如果是,如何?
答案 0 :(得分:2)
正则表达式在这里更灵活,所以这样的东西对你有用:
$pattern = "/^.*-$id(\d*)?(-.*)?\.jpg$/";
然后,您可以将其与preg_match()
一起使用,例如
if(preg_match($pattern, $input)){
//It matches
}