|
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(); тут тоже не помогает, т.к. в массиве содержатся переводы строк. | |
|
|
|
|
|
|
|
для: Добрый кот
(01.04.2012 в 14:19)
| | > ЗЗЫ. функция file(); тут тоже не помогает, т.к. в массиве содержатся переводы строк.
Это поправимо )
<?php
$arr = file( "file.txt" ); // читаем файл
array_walk( $arr , create_function( '&$a,$b' , '$a=trim($a);' ) ); // удаляем переводы строк
var_dump( $arr );
?>
|
| |
|
|
|
|
|
|
|
для: 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\"" }, но опять что то не работает. | |
|
|
|
|
|
|
|
для: Добрый кот
(01.04.2012 в 15:14)
| | Выведите еще var_dump($text) и все поймете.
Вам нужно либо в файлах \" заменить на \, либо trim() завернуть еще в stripslashes() либо $text задавать в ' (одинарных кавычках), а не в " (двойных), либо в $text заменить \" на \\\" | |
|
|
|
|
|
|
|
для: Sfinks
(01.04.2012 в 15:21)
| | Всех благ Вам, помогли :) | |
|
|
|