Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вывод строки из файла

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Dezmont
Отправлено: 19 Июля, 2010 - 16:58:08
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




Народ, подскажите как это лучше сделать? У меня есть file.txt с таким содержанием:

auto.jpg_Name:Volkswagen_alt:Offroad_title:Car
moto.jpg_Name:Yamaha_alt:Motocross_title:Moto
fruit.jpg_Name:Banana_alt:Tree_title:Eat Me


У меня php файл, в котором переменной $name присваивается имя (auto.jpg, moto.jpg, fruit.jpg.....) Мне нужно, чтобы в файле находилась строка которая начинается на $name и выводился один из параметров: name, alt, title. Чтобы я сам мог задать какой вывести.

P.S. Как найти нужную строку и вывести?
 
 Top
Саныч Модератор
Отправлено: 19 Июля, 2010 - 19:05:10
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




если я все правильно понял, то вот:
PHP:
скопировать код в буфер обмена
  1. function nnn($name,$par = array("name","title","alt"))
  2. {
  3.         $file = "file.txt";
  4.         $handle = fopen($file,"r");
  5.         $contents = fread($handle, filesize($file));
  6.         fclose($handle);
  7.         $contents = explode("\n",$contents);
  8.         $ret = array();
  9.         foreach($contents as $v)
  10.         {
  11.                 if(preg_match("/^".$name."/i",$v))
  12.                 {
  13.                         $atr = explode("_",$v);
  14.                         foreach($atr as $v2)
  15.                         {
  16.                                 list($key,$val) = explode(":",$v2);
  17.                                 if(in_array(strtolower($key),$par)) $ret[strtolower($key)] = $val;
  18.                         }
  19.                 }
  20.         }
  21.         return $ret;
  22. }


Возможно не самый лучший вариан, зато работает... Улыбка

Вызов:
$имя - первая строка, в твоем случае это $name
array() - массив значений которые нужно вывести
Примеры:
PHP:
скопировать код в буфер обмена
  1. nnn("moto.jpg") // выведет все (name,alt,title)
  2. nnn("moto.jpg",array("name","title")) // выведет только name и title

(Отредактировано автором: 19 Июля, 2010 - 19:06:07)



-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
ArchAngel
Отправлено: 19 Июля, 2010 - 19:13:51
Post Id


Новичок


Покинул форум
Сообщений всего: 62
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. $data = explode("\n",$files);
  2. forech($data as $key => $value){
  3.            $v = explode(":",$value);
  4.            $data[$key]=$v;
  5. }
  6.  
  7. // будет auto.jpg_Name
  8. print($data[0][0]);
  9. // будет Volkswagen_alt
  10. print($data[0][1]);
  11. // будет Offroad_title
  12. print($data[0][2]);
  13. // будет Car
  14. print($data[0][3]);

(Отредактировано автором: 19 Июля, 2010 - 19:15:25)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB