|
|
|
| Добрый день! Подскажите как решить такую задачку:
Существует текстовый файл test.txt
В нем содержаться данные следующего вида:
первый;второй;третий;LPO_1.jpg;десятый;
четвертый;пятый;шестой;n_23.jpg;одинадцатый;
седьмой;восьмой;девятый;pro_1.jpg;двенадцатый;
Мне нужно вывести наименование файлов с расширением *.jpg, то есть:
LPO_1.jpg
n_23.jpg
pro_1.jpg
Вот тут набросал поиск вхождений подстроки jpg в строку, но как взять все что слева от jpg?
<?php
$filename = "windom.txt";
$test = file("windom.txt");
foreach ($test as $key=>$val)
{
echo substr(strstr($val,"jpg"),0,3);
}
?>
|
| |
|
|
|
|
|
|
|
для: Front
(28.02.2008 в 13:39)
| |
<?php
$filename = "windom.txt";
$text = file_get_contents($filename); // Это только для PHP5;
// Ищем все вхождения строки и помещаем в массив;
$text=preg_match_all("#(.+?).jpg#is",$text, $out);
// Удаляем ненужную часть массива;
unset ($out[0]);
// Делаем все что нужно с массивом, например выводим;
print_r ($out);
?>
|
| |
|
|
|
|
|
|
|
для: Петр
(28.02.2008 в 13:44)
| | Fatal error: Maximum execution time of 30 seconds exceeded | |
|
|
|
|
|
|
|
для: Front
(28.02.2008 в 13:48)
| | Извиняюсь, писал без проверки.. вот рабочий вариант, но на PHP5 и выше
Для PHP4 функцию file_get_contents($filename); надо заменить на какой-нибудь аналог!
<?php
$filename = "windom.txt";
$text = file_get_contents($filename); // Это только для PHP5;
// Ищем все вхождения строки и помещаем в массив;
$text=preg_match_all("#([^а-я;]+?).jpg#is",$text, $out);
// Удаляем ненужную часть массива;
unset ($out[1]);
// Делаем все что нужно с массивом, например выводим;
print_r ($out);
?>
|
П.С. Вышло время выполнения скрипта (30 сек.) это что файл такой большой?
В таком случае его наверное лучше разбить на части | |
|
|
|
|
|
|
|
для: Петр
(28.02.2008 в 14:03)
| | Петр не могли бы вы ответить:
ненужная часть массива это что?
почему в результате получается двумерный массив? | |
|
|
|
|
|
|
|
для: Front
(28.02.2008 в 14:07)
| | А так спасибо, работает! | |
|
|
|