2012-06-12 4 views
0

Я хочу найти в текстовых именах файлов (например, имя.txt). Не могли бы вы предложить мне выражение регулярного выражения для использования в preg_match_all()? создать некоторое регулярное выражение выражение:найти в текстовых файлах имена, preg_match_all

preg_match_all ("[. A-Za-Z0-9 _] [.]/^ + [A-Za-Z0-9] {1,3} $ /", $ string, $ w);

Но всегда получайте пустой результат.

+0

Я думаю, что вы должны использовать разделители '^ 'и' $ ', потому что я предполагаю, что вы делаете в' preg_match_all' к тексту или предложения. –

ответ

0

просто удалить эти символы (^ и $) в вас рег выражение

Это работает для меня:

preg_match_all("![a-zA-Z0-9_.]+[.][a-zA-Z0-9]{1,3}!", $string, $w); 

^- Соответствует началу строки.

$ - Соответствует концу строки.

Если файл помещен в текст, вы можете опустить эти символы.

Я хотел бы использовать следующую рег выражение, потому что один вы писали находит файлы с расширением, состоящим из 1 до 3 букв, но, как правило, расширение содержит 3 буквы (.doc, TXT)

Вот Рабочий пример:

$string=" some text name.txt some text hello.doc"; 
preg_match_all("![a-zA-Z0-9_.]+[.][a-zA-Z0-9]{3}!", $string, $w); 
print_r($w); 

Выход:

Array ([0] => Array ([0] => name.txt)) 
Смежные вопросы