Домой Wp-Recall WP-Recall: Пишем свое дополнение и кастомизация PHP код аддона для поиска в каталоге, и выдачи в список релевантных файлов, не корректно отображает список файлов?
30ответ(ов) в теме
dydaevskiy
не в сети 2 года
На сайте с 26.04.2016
Участник
Тем 30
Сообщения 162
1
16:11

Здравствуйте друзья, в php кодинге я начинающий в связи с чем столкнулся с траблой.

Что имеется для начала:
1) У начальника имеется программа в которой хранится база данных, в данной базе данных имеются все клиенты компании и все финансовые операции между компанией и клиентами, называется программа "CarStore".
2) В программе реализована функция экспорта отчетов в файлы формата .PDF.
3) Имеется сайт на CMS WordPress
4) Все экспортируемые файлы PDF имеют название в соответствии логинам на сайте WordPress. То есть
Если на сайте user "00006" то его отчеты будут иметь имена:
00006_09_11_2015.pdf, 00006_16_04_2015.pdf, 00006_23_12_2014.pdf и т.д.

Что было реализовано:
Впринцепе поставленная задача была решена, единственоое с чем столкнулся это то что список не отображается полностью, а отображается только первая его строка. Как реализовать что бы список отображался полностью?

Код index.php:

<?php

add_action('init','add_tab_my_report_files');
add_action('init','add_tab_my_report_files');
function add_tab_my_report_files(){
    rcl_tab('myform','my_report_files_recall_block','Мои отчеты',array('public'=>0,'class'=>'fa-file-text-o','order'=>20));
}
function my_report_files_recall_block($user_lk){
{echo '<a href="http://testgoldauto.com/wp-login.php?action=logout&redirect_to=http://testgoldauto.com" class="recall-button block_button active"><i class="fa fa-sign-in"></i> Выход</a><br>';}
	
global $current_user;
      get_currentuserinfo();

      $user_login =  '' . $current_user->user_login;

$dir = 'pdf/';
$list = glob($dir.$user_login.'_*.pdf');
foreach($list as $file_path)
{
$filename = basename($file_path);
$rest = substr("$filename", 6, 15); // возвращает "дату"
  return "<a href="http://testgoldauto.com/pdf/".$filename."" target="_blank">".$rest."<a><br>";
}
}

0
Андрей CS
не в сети 22 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16855
2
16:15

ну так и будет если в самом цикле возвращаться данные через return. Как только первый результат цикла был возвращен через return его действие прекращается.
Производите внутри цикла склеивание строк, а уже после цикла возвращайте результат через return.

0
dydaevskiy
не в сети 2 года
На сайте с 26.04.2016
Участник
Тем 30
Сообщения 162
3
16:16

Как это сделать?

0
Андрей CS
не в сети 22 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16855
4
16:21

dydaevskiy сказал(а)

Как это сделать?

$links = array();
foreach($list as $file_path){
  $filename = basename($file_path);
  $rest = substr("$filename", 6, 15); // возвращает "дату"
  $links[] = "<a href="http://testgoldauto.com/pdf/".$filename."" target="_blank">".$rest."<a><br>";
}
return implode('<br>',$links);

1
dydaevskiy
не в сети 2 года
На сайте с 26.04.2016
Участник
Тем 30
Сообщения 162
5
16:26

Спасибо, помогло

0
dydaevskiy
не в сети 2 года
На сайте с 26.04.2016
Участник
Тем 30
Сообщения 162
6
14:57

Здравствуйте Андрей, в общем не много модернизировал свой аддон и столкнулся с проблемой.
На данный момент мой index.php выглядит так:

<?php
//Вывод ошибок для отладки на экран
ini_set('display_errors',1);
error_reporting(E_ALL);
  //Конц вывода ошибок для отладки на экран
 
//Добавление новой вкладки в WP-RECALL
add_action('init','add_tab_my_report_files');
  //Функция добавления
function add_tab_my_report_files(){
    //Внешний вид новой вкладки иконка, тайтл
    rcl_tab('myform','my_report_files_recall_block','Мои отчеты',array('public'=>0,'class'=>'fa-file-text-o','order'=>20));
}
//Содержимое вкладки и место отображения контента - $user_lk
function my_report_files_recall_block($user_lk){
  //WordPress захват логина пользователя
global $current_user;
      get_currentuserinfo();
 
      $user_login =  '' . $current_user->user_login;
  // END WordPress захват логина пользователя 
 
//Входим в каталог _doc за тем в подкаталог имя которого соответствует логину пользователя
$dir = '_doc/'.$user_login.'/';
//Загоняем в переменную $list весь список файлов который находится в каталоге и подкаталоге
$list = glob($dir.$user_login.'_*.*');
//Создаем пустой массив в который далее будет добавлен весь список файлов
$links = array ();
//Добавлем список файлов из подкаталога с логином пользователя в пустой массив
foreach( $list as $file_path){
  $filename = basename($file_path);
//Начало отображения имени файла с 14 символа от конца, и отображать 14 символов
  $rest = substr("$filename", -14, 14);
  //$links[] = "<a href="http://www.sto.sumy.ua/_doc/$user_login/".$filename."" target="_blank">".$rest."<a>";
  //Создаем маску для кнопки загрузки файлов
  $download = "<a href="testgoldauto.com/_doc/$user_login/".$filename."" download><i class="fa fa-download fa-2x" aria-hidden="true" ></i></a>";
 
//РЕАЛИЗАЦИЯ ДИАЛОГОВОГО ОКНА ЗАГРУЗКИ ФАЙЛА В БРАУЗЕРЕ
$file = ($dir.$user_login.'_*.*');
 
if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    readfile($file);
    exit;
}
// END РЕАЛИЗАЦИЯ ДИАЛОГОВОГО ОКНА ЗАГРУЗКИ ФАЙЛА В БРАУЗЕРЕ
 
  //Добавляем в пустой массив список файлов по указанной в переменной маске
  $links[] = "<a href="http://testgoldauto.com/_doc/$user_login/".$filename."" target="_blank">".$rest."</a> ".$download." ";
 
}
//Реверсируем список файлов в обратном порядке
$preserved = array_reverse($links, true);
//Отображаем в основное содержимое полученый список файлов в обратном порядке
return implode ('<br>',$preserved);
 
 
}

Мне необходимо реализовать загрузку pdf, jpg, png и прочих файлов по кнопке но на данный момент браузер говорит о том что файл пустой и не сохраняет файл.
Андрей подскажите пожалуйста в чем моя ошибка.

0
Андрей CS
не в сети 22 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16855
7
15:12

я правильно понял, что функция readfile срабатывает при загрузке содержимого вкладки ЛК?
Если это так, то вы пытаетесь отправить заголовки с данными о выгружаемом файле после того как уже был был произведен вывод контента и заголовки уже были отправлены, надо отправлять их раньше, например, во время страбатывания экшна wp

0
dydaevskiy
не в сети 2 года
На сайте с 26.04.2016
Участник
Тем 30
Сообщения 162
8
15:40

Реализовал так:

<?php
//Вывод ошибок для отладки на экран
ini_set('display_errors',1);
error_reporting(E_ALL);
  //Конц вывода ошибок для отладки на экран
 
//Добавление новой вкладки в WP-RECALL
add_action('init','add_tab_my_report_files');
  //Функция добавления
function add_tab_my_report_files(){
    //Внешний вид новой вкладки иконка, тайтл
    rcl_tab('myform','my_report_files_recall_block','Мои отчеты',array('public'=>0,'class'=>'fa-file-text-o','order'=>20));
}
//Содержимое вкладки и место отображения контента - $user_lk
function my_report_files_recall_block($user_lk){
  //WordPress захват логина пользователя
global $current_user;
      get_currentuserinfo();
 
      $user_login =  '' . $current_user->user_login;
  // END WordPress захват логина пользователя 
 
 //РЕАЛИЗАЦИЯ ДИАЛОГОВОГО ОКНА ЗАГРУЗКИ ФАЙЛА В БРАУЗЕРЕ
$file = ($dir.$user_login.'_*.*');
 
if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    readfile($file);
    exit;
}
// END РЕАЛИЗАЦИЯ ДИАЛОГОВОГО ОКНА ЗАГРУЗКИ ФАЙЛА В БРАУЗЕРЕ
 
//Входим в каталог _doc за тем в подкаталог имя которого соответствует логину пользователя
$dir = '_doc/'.$user_login.'/';
//Загоняем в переменную $list весь список файлов который находится в каталоге и подкаталоге
$list = glob($dir.$user_login.'_*.*');
//Создаем пустой массив в который далее будет добавлен весь список файлов
$links = array ();
//Добавлем список файлов из подкаталога с логином пользователя в пустой массив
foreach( $list as $file_path){
  $filename = basename($file_path);
//Начало отображения имени файла с 14 символа от конца, и отображать 14 символов
  $rest = substr("$filename", -14, 14);
  //$links[] = "<a href="http://www.sto.sumy.ua/_doc/$user_login/".$filename."" target="_blank">".$rest."<a>";
  //Создаем маску для кнопки загрузки файлов
  $download = "<a href="testgoldauto.com/_doc/$user_login/".$filename."" download><i class="fa fa-download fa-2x" aria-hidden="true" ></i></a>";
 

 
  //Добавляем в пустой массив список файлов по указанной в переменной маске
  $links[] = "<a href="http://testgoldauto.com/_doc/$user_login/".$filename."" target="_blank">".$rest."</a> ".$download." ";
 
}
//Реверсируем список файлов в обратном порядке
$preserved = array_reverse($links, true);
//Отображаем в основное содержимое полученый список файлов в обратном порядке
return implode ('<br>',$preserved);
 
 
}

Логи:

[17-Jun-2016 12:36:10 UTC] PHP Notice:  Undefined variable: dir in D:OpenServerdomainstestgoldauto.comwp-contentpluginswp-recalladd-onfilesindex.php on line 24

php ругается на $file = ($dir.$user_login.'_*.*');
Хм... Мой моцг уже течет

0
Андрей CS
не в сети 22 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16855
9
15:50

переменная $dir не была определена

0
Вова (Otshelnik-Fm)
не в сети 3 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
10
15:53

$file = ($dir.$user_login.'_*.*');

- у вас там $dir не определена

опоздал...

в файле .htaccess никаких запретов нет?

0
dydaevskiy
не в сети 2 года
На сайте с 26.04.2016
Участник
Тем 30
Сообщения 162
11
22:04

Есть лежит в каталоге _doc

# BEGIN WordPress Запретить доступ ко всем файлам
Options All -Indexes
# END WordPress

0
Вова (Otshelnik-Fm)
не в сети 3 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
12
22:14

Убирали - чистоты ради эксперимента?
Я понимаю что он запрещает ходить по папке - но вдруг он не дает скачать?
Ситуация лично мне кажется странной - вы формируете ссылки. Ссылки верные? Но файл оказывается 0 байт.
И попробуйте в разных браузерах.

0
dydaevskiy
не в сети 2 года
На сайте с 26.04.2016
Участник
Тем 30
Сообщения 162
13
22:24

Otshelnik-Fm сказал(а)

$file = ($dir.$user_login.'_*.*');

- у вас там $dir не определена

опоздал...

в файле .htaccess никаких запретов нет?

Спасибо, $dir объявил в нужном месте сейчас мой код выглядит так (но все равно загрузка файла через диалоговое окно происходит с ошибкой):

0,'class'=>'fa-file-text-o','order'=>20));
}
//Содержимое вкладки и место отображения контента - $user_lk
function my_report_files_recall_block($user_lk){
  //WordPress захват логина пользователя
global $current_user;
      get_currentuserinfo();
 
      $user_login =  '' . $current_user->user_login;
  // END WordPress захват логина пользователя 
  
  //Входим в каталог _doc за тем в подкаталог имя которого соответствует логину пользователя
$dir = '_doc/'.$user_login.'/';
 
 //РЕАЛИЗАЦИЯ ДИАЛОГОВОГО ОКНА ЗАГРУЗКИ ФАЙЛА В БРАУЗЕРЕ
$file = ($dir.$user_login.'_*.*');
 
if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    readfile($file);
    exit;
}
// END РЕАЛИЗАЦИЯ ДИАЛОГОВОГО ОКНА ЗАГРУЗКИ ФАЙЛА В БРАУЗЕРЕ
 

//Загоняем в переменную $list весь список файлов который находится в каталоге и подкаталоге
$list = glob($dir.$user_login.'_*.*');
//Создаем пустой массив в который далее будет добавлен весь список файлов
$links = array ();
//Добавлем список файлов из подкаталога с логином пользователя в пустой массив
foreach( $list as $file_path){
  $filename = basename($file_path);
//Начало отображения имени файла с 14 символа от конца, и отображать 14 символов
  $rest = substr("$filename", -14, 14);
  //$links[] = "<a target="_blank">".$rest."</a><a>";
  //Создаем маску для кнопки загрузки файлов
  $download = "</a><a><i class="fa fa-download fa-2x"></i></a>";
 

 
  //Добавляем в пустой массив список файлов по указанной в переменной маске
  $links[] = "<a target="_blank">".$rest."</a> ".$download." ";
 
}
//Реверсируем список файлов в обратном порядке
$preserved = array_reverse($links, true);
//Отображаем в основное содержимое полученый список файлов в обратном порядке
return implode ('<br />',$preserved);
 
 
}

Но упорно чувствую что какой-то косяк с .htaccess
Так как в нем указано:

# BEGIN WordPress Запретить доступ ко всем файлам
Options All -Indexes
# END WordPress

Хм... Как сделать что б не было доступа к содержимому каталога, но был доступ к загрузке и открытию файлов из каталога?

0
dydaevskiy
не в сети 2 года
На сайте с 26.04.2016
Участник
Тем 30
Сообщения 162
14
22:48

Хммм. каким-то удивительным образом ссылка для загрузки файлов через диалоговое окно у меня формируется вот такая:
Firefox не может найти файл

<strong>http://testgoldauto.com/stranitsa-polzovatelya/</strong>testgoldauto.com/_doc/admin/admin_2016-09-26.pdf.

Нахождение косяка уже близко

0
Вова (Otshelnik-Fm)
не в сети 3 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
15
23:09

Но упорно чувствую что какой-то косяк с .htaccess
Так как в нем указано:

так вы на время уберите - и проверите - в нем дело или нет. И браузер другой попробуйте - всяко может быть

код ваш съедает парсер. Попробуйте его вставлять через сервис

Вы не можете просматривать опубликованные ссылки

- ссылку тут дадите

1
dydaevskiy
не в сети 2 года
На сайте с 26.04.2016
Участник
Тем 30
Сообщения 162
16
00:09

Ёлки палки! Пропустил http://
Все заработало! Ребята спасибо за Ваше время. На данный момент вроде как все заработало.
🙂

0
dydaevskiy
не в сети 2 года
На сайте с 26.04.2016
Участник
Тем 30
Сообщения 162
17
13:21

Друзья на данный момент мой код виглядет так:

0,'class'=>'fa-file-text-o','order'=>20));
		}
//Содержимое вкладки и место отображения контента - $user_lk
function my_report_files_recall_block($user_lk)
{
		//WordPress захват логина пользователя
		global $current_user;
		get_currentuserinfo();

		$user_login =  '' . $current_user->user_login;
		// END WordPress захват логина пользователя 
  
			//Входим в каталог _doc за тем в подкаталог имя которого соответствует логину пользователя
			$dir = '_doc/'.$user_login.'/';
 
				//Загоняем в переменную $list весь список файлов который находится в каталоге и подкаталогах
				$list = glob($dir.'*.*');
				//Создаем пустой массив в который далее будет добавлен весь список файлов
				$links = array ();
		//Добавлем список файлов из подкаталога с логином пользователя в пустой массив
		foreach( $list as $file_path)
		{
		$filename = basename($file_path);
		
						
		
		  //Начало отображения имени файла с 14 символа от конца, и отображать 14 символов
		  ///$rest = substr("$filename", -14, 14);
		  //$links[] = "<a target="_blank">".$rest."</a><a>";
		  //Создаем маску для кнопки загрузки файлов
		  
		  $download = "</a><a><i class="fa fa-download fa-2x"></i></a>";
		 //$download = "<a><i class="fa fa-download fa-2x"></i></a>";

				//LiveComposer Разметка
				$divStrat = '<div class="col-xs-12 col-sm-12 col-md-4 col-lg-4">';
				$divEnd = '</div>';
		
		  //Добавляем в пустой массив список файлов по указанной в переменной маске
		  $links[] = "<a target="_blank">".$filename."</a> ".$download." ";
		}
		
		


						//РЕАЛИЗАЦИЯ ДИАЛОГОВОГО ОКНА ЗАГРУЗКИ ФАЙЛА В БРАУЗЕРЕ
						$file = ($filename);
							if (file_exists($file)) 
						{
							header('Content-Description: File Transfer');
							header('Content-Type: application/octet-stream');
							header('Content-Disposition: attachment; filename='.basename($file));
							header('Expires: 0');
							header('Cache-Control: must-revalidate');
							header('Pragma: public');
							header('Content-Length: ' . filesize($file));
							readfile($file);
							exit;
						}
						// END РЕАЛИЗАЦИЯ ДИАЛОГОВОГО ОКНА ЗАГРУЗКИ ФАЙЛА В БРАУЗЕРЕ


	//Реверсируем список файлов в обратном порядке
	$preserved = array_reverse($links, true);
	
//Отображаем в основное содержимое полученый список файлов в обратном порядке
return implode ('<br />',$preserved);
 
 
}

Физически аддон отображается следующим образом:
http://i63.tinypic.com/kb6mau.png

Мне необходимо поделить содержимое массива на 4 столбика bootstrap, а если в каталоге dir имеются папки то на 3.
Как разделить содержимое массива так что бы в 4 (3) столбиках было по 10 строк массива?

0
Вова (Otshelnik-Fm)
не в сети 3 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
18
14:24

использовать для этого css не пробовали?

Вы не можете просматривать опубликованные ссылки
0
dydaevskiy
не в сети 2 года
На сайте с 26.04.2016
Участник
Тем 30
Сообщения 162
19
15:15

Прошу прощение не описал всю картину того что мне нужно реализовать
Вот идеальный вариант того что мне нужно реализовать:
http://i65.tinypic.com/34h9ok6.png
1) Мне нужно все строки данного массива:

//Добавлем список файлов из подкаталога с логином пользователя в пустой массив
		foreach( $list as $file_path)
		{
		$filename = basename($file_path);

Разделить на 3 в том случае если в каталоге имеются подкаталоги, для того что бы отобразить первые 30 файлов в 3 столбиках, а в четвертом отобразить столбик папок.
Остальне строки массива скрыть в спойлер, но при нажатии на спойлер что б отобразился весь остальной список строк в четыре столбика.
IFELSE
Если в каталоге менее 40 фалов то отобразить то количество столбиков которое соответствует количеству файлов.
IFELSE
Разделить на 4 столбика в том случае если в каталоге не имеется папок, для того что бы отобразить первые 40 файлов в 4 столбика.
Остальне строки массива скрыть в спойлер, но при нажатии на спойлер что б отобразился весь остальной список строк в четыре столбика.

0
dydaevskiy
не в сети 2 года
На сайте с 26.04.2016
Участник
Тем 30
Сообщения 162
20
15:19

На данном этапе реализации мне нужно понять как мне вытянуть из массива
первые 10 строк и загнать их в переменную
вторые 10 строк и загнать их в переменную
третьи 10 строк и загнать их в переменную
четвертые 10 строк и загнать их в переменную

Может я чего-то не до понимаю, тыкайте меня носом я только учусь.
Спасибо всем.

0
Вова (Otshelnik-Fm)
не в сети 3 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
21
16:00

Я так понимаю вам нужно в цикле инициализировать счетчик, делать проверку на количество итераций, при 0-9 одна переменная, при 10-19 другая... и т.д.

Вы не можете просматривать опубликованные ссылки

примерно так. Только там break-ом останавливают

1
dydaevskiy
не в сети 2 года
На сайте с 26.04.2016
Участник
Тем 30
Сообщения 162
22
07:04

Супер! Спасибо за подсказку.
Такой вопрос - как мне в return implode добавить "обвертку - сетку грид"

//LiveComposer Разметка $divEnd $divStrat
				$divStrat = '<div class="dslc-col dslc-3-col dslc-last-col data-dslc-module-size="3">';
				$divEnd = '</div>';

//Реверсируем список файлов в обратном порядке
$preserved = array_reverse($links, true);

//Отображаем в основное содержимое полученый список файлов в обратном порядке
return implode
// $divStrat $divEnd
($preserved);


Мне нужно как-то обернуть вывод самого массива типа такого (хотя в этом примере это очень не правильно):

//Отображаем в основное содержимое полученый список файлов в обратном порядке
return implode 
// $divStrat $divEnd
<strong>echo $divStrat;</strong>
($preserved);
<strong>echo $divEnd;</strong>

0
dydaevskiy
не в сети 2 года
На сайте с 26.04.2016
Участник
Тем 30
Сообщения 162
23
16:18

Я так понимаю мне нужно добавить требуемые переменные в один массив, а далее просто отобразить их через return.
Сейчас я делаю так:
$input_array = array($divStart,$preserved,$divEnd);
return implode
($input_array);

Но место требуемых колонок отображается только Arroy

0
dydaevskiy
не в сети 2 года
На сайте с 26.04.2016
Участник
Тем 30
Сообщения 162
24
17:15

Отшельник, дайте пожалуйста хоть намек. Просто если б была возможность все отображать через echo мне кажется было бы все на много проще.

0
Вова (Otshelnik-Fm)
не в сети 3 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
25
17:21

Я потерял вашу мысль - что вам нужно. Из того что вы написали после моего последнего сообщения я ничего не понял. Вы там кучу каких то css классов хотите использовать...

"обвертку - сетку грид"

- зачем использовать что-то стороннее и избыточное когда это основы css?

если вы будете в return использовать конкатенацию: return $div1.$div2.$div3 тогда вы все фрагменты и свяжете

0
Андрей CS
не в сети 22 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16855
26
20:32

сформируйте нужный контент для вывода через конкатенацию строк, а результат возвращайте через return

0
dydaevskiy
не в сети 2 года
На сайте с 26.04.2016
Участник
Тем 30
Сообщения 162
27
23:40

Ребята, проблема в том что я вывожу через return implode содержимое массива:

//Входим в каталог _doc за тем в подкаталог имя которого соответствует логину пользователя
			$dir = '_doc/'.$user_login.'/';
 
				//Загоняем в переменную $list весь список файлов который находится в каталоге и подкаталогах
				$list = glob($dir.'*.*');
				//Создаем пустой массив в который далее будет добавлен весь список файлов
				$links = array ();

То есть я захватываю весь список имен документов в папке и выдаю их через переменную.
В силу того что в WP-RECALLвывод содержимого вкладки возможен только через return я зашел в тупик, так как не могу более одного раза указать return implode .
Может я чего-то не понимаю.

0
Вова (Otshelnik-Fm)
не в сети 3 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
28
23:49

Все равно я ничего не понял
А если так:

$one = implode ('<br>',$preserved1);
$two = implode ('<br>',$preserved2);
$thre = implode ('<br>',$preserved3);
return $one.$two.$thre;

1
dydaevskiy
не в сети 2 года
На сайте с 26.04.2016
Участник
Тем 30
Сообщения 162
29
10:50

Огромное спасибо, то что нужно )

0
Андрей CS
не в сети 22 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16855
30
11:56

dydaevskiy сказал(а)
Может я чего-то не понимаю.

Я же вам посоветовал воспользоваться конкатенацией, воспользуйтесь гуглом, если не знаете, что это такое.
Перед выводом через return строки клеиваются в одну строку и затем уже выводятся.

1
Тема закрыта. Публикация новых сообщений запрещена.