Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Содержимое файла в массив
 
 автор: Добрый кот   (01.04.2012 в 14:19)   письмо автору
40 байт
 
 

Здравствуйте. Имеется файл с несколькими строками. Нужно занести содержимое файла в массив, гдесодержимое каждой строки должно соответствовать отдельному элементу массива. Читаю файл и обрабатываю
    $search =str_replace("\r\n","\", \"",$search );
    $search = substr($search, 0, -3);
    $search = "\"".$search;  //получаем строку вида "a href=\"../130/\"", "a href=\"../359/\""
    $search = array($search);
     var_dump($search); // выводит array(1) { [0]=> string(39) "a href=\"../130/\"", a href=\"../359/\"" }

Если прописать сразу в скрипте так
    $search = array("a href=\"../130/\"", "a href=\"../359/\"");
     var_dump($search); // выводит array(2) { [0]=> string(16) "a href="../130/"" [1]=> string(16) "a href="../359/"" }
то все выводит нормально, как нужно.
почему первый вариант не работает?
ЗЫ. прикрепляю файл , который обрабатываю.
ЗЗЫ. функция file(); тут тоже не помогает, т.к. в массиве содержатся переводы строк.

  Ответить  
 
 автор: Sfinks   (01.04.2012 в 14:45)   письмо автору
 
   для: Добрый кот   (01.04.2012 в 14:19)
 

> ЗЗЫ. функция file(); тут тоже не помогает, т.к. в массиве содержатся переводы строк.

Это поправимо )
<?php
  $arr 
file"file.txt" );                                          // читаем файл
  
array_walk$arr create_function'&$a,$b' '$a=trim($a);' ) );  // удаляем переводы строк
  
var_dump$arr );
?>

  Ответить  
 
 автор: Добрый кот   (01.04.2012 в 15:14)   письмо автору
 
   для: Sfinks   (01.04.2012 в 14:45)
 

Благодарю, работает отлично. Но есть еще вопрос.
делаю аналогично:
<?php
    $search 
file$vse_faili );  // читаем файл 
    
array_walk$search create_function'&$a,$b' '$a=trim($a);' ) );//array(2) { [0]=> string(18) "a href=\"../130/\"" [1]=> string(18) "a href=\"../359/\"" }
    
$replace file$rep1 );  // читаем файл 
    
array_walk$replace create_function'&$a,$b' '$a=trim($a);' ) );    //array(2) { [0]=> string(28) "a href=\"/336.html\"" [1]=> string(29) "a href=\"/1281.html\"" }
    
$text  "Синонимы: <a href=\"../130/\">цветок</a>, <a href=\"../359/\">цветочек</a>";
    
$newtext str_replace($search$replace$text);    
    
var_dump$newtext );
?>

Где то видел, что в str_replace можно заменять одни элементы массива на другие.
в моем случае надо array(2) { [0]=> string(18) "a href=\"../130/\"" [1]=> string(18) "a href=\"../359/\"" } заменить соответственно на array(2) { [0]=> string(28) "a href=\"/336.html\"" [1]=> string(29) "a href=\"/1281.html\"" }, но опять что то не работает.

  Ответить  
 
 автор: Sfinks   (01.04.2012 в 15:21)   письмо автору
 
   для: Добрый кот   (01.04.2012 в 15:14)
 

Выведите еще var_dump($text) и все поймете.
Вам нужно либо в файлах \" заменить на \, либо trim() завернуть еще в stripslashes() либо $text задавать в ' (одинарных кавычках), а не в " (двойных), либо в $text заменить \" на \\\"

  Ответить  
 
 автор: Добрый кот   (01.04.2012 в 15:47)   письмо автору
 
   для: Sfinks   (01.04.2012 в 15:21)
 

Всех благ Вам, помогли :)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования