2013-05-03 5 views
1

Я пытаюсь использовать preg_match, чтобы каждая фотография, имя файла которой gallery\album\U[digits].jpg, имеет название «Без названия».Регулярное выражение для имени фотографии не работает

Вот код:

foreach($photos as $photo){ 
    if (preg_match('.*U[0-9]*\.jpg',$photo)) { 
    $title = "Untitled"; 
    } 
    else { 
    $title = basename($photo,".jpg"); 
    } 
} 

Любая идея, почему это не соответствует? Заголовок любого из этих файлов заканчивается «U2» или «U29».

+1

Ну, вы не соответствие U * .jpg, вы соответствие Udigits.jpg – melwil

+0

Да, извините, позвольте мне изменить, что ... – NaOH

ответ

4

Try,

if (preg_match('@U[0-9][email protected]',$photo)) { 

DEMO.

+0

Это прекрасно работает. Спасибо! Могу ли я спросить, в чем разница? – NaOH

+0

@NaOH - Ваше выражение тоже правильно, просто нужно добавить разделитель '@' в начало и конец регулярного выражения, чтобы он работал. И замените '[0-9] *' на '[0-9] +'. – Rikesh

+0

Разделителем может быть любой небуквенный символ, без обратного слэша, символ без пробелов. – Bart

Смежные вопросы