Encuentra todos los archivos en el directorio con cadena o patrón en el nombre del archivo con PHP

Estoy tratando de enumerar los archivos en un directorio (recursivo o no) con PHP donde el nombre de archivo coincide con un cierto patrón. Nunca he sido demasiado bueno con regex, por lo que cualquier ayuda que pueda ofrecer sería excelente. Podría buscar una comprobación literal de los nombres de archivo devueltos, pero creo que esa no es una gran idea :)

Actualización + solución final: 18/01/2011 a las 8:06 p.m.

Encontré otra forma de hacer lo que estaba buscando una vez que entendí un poco más la expresión regular. Por supuesto que estaba completamente frustrado sobre dónde estaba con la expresión regular, ahora entiendo un poco gracias a un amigo que me apartó para explicar algo de esto en términos más simples de lo que estaba encontrando en las guías en línea.

Esta solución básicamente busca una imagen específica con un prefijo inicial de "prefixone" o "prefixtwo", mientras que también verifica que es una imagen de cierto tipo (jpg, jpeg, png) y coincide con cualquiera de los siguientes formatos .

Dependiendo de la babosa que pasó de Wordpress (donde estaba usando esto), coincidiría con esa expresión regular. Aquí hay un listado de muestra:

prefixone.123-abc._tag1.001.jpg
prefixone.345-xyz._tag1.002.jpeg
prefixtwo.123-abc._tag2._tag1.003.jpg
prefixone.123-abc._tag2.004.jpeg
prefixtwo.345-xyz._tag2._tag3._tag1.005.jpg
prefixtwo.123-abc._tag1.001.jpg
prefixone.345-xyz._tag1.001.png
prefixtwo.456-rst._tag1.001.png

Todos estos archivos que posiblemente hayan sido devueltos en la lista de archivos de nuestra función opendir (), cualquiera de estos podría haber sido una coincidencia si la babosa coincidía. Independientemente del orden de la información de etiquetado en el nombre del archivo.

Espero que esto ayude a otro usuario que lucha con expresiones regulares. Es difícil dominarlo, pero una vez que comprende algunas cosas fundamentales, el resto comienza a encajar rápidamente para comenzar a construir el suyo.

Código:

<?php
// create an array to hold directory list
$results = array();

// create a handler for the directory
$directory = $_SERVER['DOCUMENT_ROOT'].'/some/path/to/images/';
$handler = opendir($directory);

// open directory and walk through the filenames
while ($file = readdir($handler)) {

    // if file isn't this directory or its parent, add it to the results
    if ($file != "." && $file != "..") {

        // check with regex that the file format is what we're expecting and not something else
        if(preg_match('#^(prefixone|prefixtwo)[^\s]*\.'.$wordpress-slug.'\.[^\s]+(\.(jpg|jpeg|png))#', $file)) {

            // add to our file array for later use
            $results[] = $file;
        }
    }
}
?>

En realidad no necesitaba recursivo para esto, pero realmente hay muchos ejemplos recursivos en línea y esa fue realmente la menor de mis preocupaciones. El aislamiento del contenido por patrón fue el núcleo de esta tarea, por lo que el código anterior fue suficiente.

Nota al margen:

Para aquellos que señalaron los "comentarios aceptados" ayer, no tenía idea de que me estaba perdiendo eso y me disculpo. Estaba teniendo un mal día. Perdón si parecía molestar a alguien por los comentarios. Esta es una gran comunidad y estoy feliz de devolver donde puedo, también.

Respuestas a la pregunta(1)

Su respuesta a la pregunta