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 :: html + php

 PHP.SU

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


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

> Описание: очень легкий вопрос...
reslear
Отправлено: 09 Августа, 2011 - 21:42:25
Post Id


Новичок


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


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

[+]


Всем привет!
помогите с формированием нет идей вообще ....

нужно что бы из этого :

CODE (html):
скопировать код в буфер обмена
  1. <div><a href="http://"></a><a href="http://"></a><a href="http://"></a><div><a href="http://"></a></div></div>


получить читаемый формат:

CODE (html):
скопировать код в буфер обмена
  1. <div>
  2.   <a href="http://"></a>
  3.   <a href="http://"></a>
  4.   <a href="http://"></a>
  5.   <div>
  6.     <a href="http://"></a>
  7.   </div>
  8. </div>
 
 Top
iflight
Отправлено: 09 Августа, 2011 - 21:59:49
Post Id



Гость


Покинул форум
Сообщений всего: 119
Дата рег-ции: Март 2011  
Откуда: Россия, Сыктывкар


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




Вопрос что-то не понятен(:
Вам надо чтобы конечный html так выглядел? тогда можно двойные ковычки и \n\r использовать

(Отредактировано автором: 09 Августа, 2011 - 22:01:52)

 
 Top
reslear
Отправлено: 09 Августа, 2011 - 22:03:35
Post Id


Новичок


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


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

[+]


нет я пишу программу на php и тут понадобилась такая функция как формирование html смысл заключается в том что юзер вставляет html нажимает кнопку всё код становится понятным для чтения!
 
 Top
DeepVarvar Супермодератор
Отправлено: 09 Августа, 2011 - 22:16:26
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




Оу, мысль Закатив глазки
Но не все так просто.
 
 Top
White
Отправлено: 09 Августа, 2011 - 22:17:07
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


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





используйте кнопки enter и tab Подмигивание

а если серьезно, то просто переносы сделать несложно:
PHP:
скопировать код в буфер обмена
  1.  
  2. $text='<div><a href="http://"></a><a href="http://"></a><a href="http://"></a><div><a href="http://"></a></div></div>';
  3. $text=strtr($text, array("</div>"=>"</div>\n", "</a>"=>"</a>\n", "<div>"=>"\n<div>\n"));
  4. $row=explode("\n", $text);
  5. $starttab=0;
  6. foreach($row as $value) {
  7.   $value=trim($value);
  8.   if(strtolower($value)=='</div>') $starttab=$starttab-1;
  9.   $tab='';
  10.   for($i=0;$i<$starttab;$i++) $tab.="\t";
  11.   if($value) echo $tab.$value."\n";
  12.   if(strtolower($value)=='<div>') ++$starttab;
  13. }
  14. ?>
  15.  

(Отредактировано автором: 09 Августа, 2011 - 22:22:16)



-----
if(time()>1356048000) die();
 
 Top
DeepVarvar Супермодератор
Отправлено: 09 Августа, 2011 - 22:19:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




White до первой вложенности.
Я так сразу подумал что придется строить полное DOM-дерево в массиве и выводить потом рекурсивно.
 
 Top
White
Отправлено: 09 Августа, 2011 - 22:24:21
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


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




DeepVarvar
чуток подправил код, с дивами работает нормально, с конкретным данным примером выдает абсолютный результат.


-----
if(time()>1356048000) die();
 
 Top
reslear
Отправлено: 09 Августа, 2011 - 22:25:05
Post Id


Новичок


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


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

[+]


White, спасибо за идею!!!!!

DeepVarvar, можно пример скрипта????
 
 Top
White
Отправлено: 09 Августа, 2011 - 22:33:37
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


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




DeepVarvar пишет:
до первой вложенности.
до первых параметров в открывающем теге, но идею можно развить, строить DOM дерево как по мне здесь необязательно


-----
if(time()>1356048000) die();
 
 Top
reslear
Отправлено: 09 Августа, 2011 - 22:49:44
Post Id


Новичок


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


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

[+]


ага если
CODE (html):
скопировать код в буфер обмена
  1. <a href="http://"><div>kkk</div></a>


то кидает :

CODE (html):
скопировать код в буфер обмена
  1. <a href="http://">
  2. <div>
  3. kkk</div>
  4. </a>
 
 Top
White
Отправлено: 09 Августа, 2011 - 22:55:53
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


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




правим 3 строчку и вуаля:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $text=strtr($text, array("</div>"=>"\n</div>\n", "</a>"=>"</a>\n", "<div>"=>"\n<div>\n"));


-----
if(time()>1356048000) die();
 
 Top
reslear
Отправлено: 09 Августа, 2011 - 23:21:59
Post Id


Новичок


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


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

[+]


White

теперь так получается:

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <a href="http://">
  3. <div>
  4. kkk
  5. </div>
  6. </a>


нужно что бы было :

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <a href="http://">
  3.   <div>kkk</div>
  4. </a>


и именно пробелы

(Отредактировано автором: 09 Августа, 2011 - 23:22:51)

 
 Top
iflight
Отправлено: 10 Августа, 2011 - 00:43:05
Post Id



Гость


Покинул форум
Сообщений всего: 119
Дата рег-ции: Март 2011  
Откуда: Россия, Сыктывкар


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




Ого) "очень легкий вопрос" ))
А мне кажется надо извлекать DOM структуру и последовательно выводить теги\контент, каждого уровня. Так наиболее гибко будет имхо(в том смысле что для любых страниц + без модификации подойдет и для xml и для новых стандартов html)... Тока это задачка не для меня ))
 
 Top
DeepVarvar Супермодератор
Отправлено: 10 Августа, 2011 - 04:13:19
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




Примерно если, то как-то так...
PHP:
скопировать код в буфер обмена
  1.  
  2. function getDOM(&$build,$str,$layer) {
  3.   $layer++;
  4.   if (preg_match_all("#<([a-z]+)>(.*)</\\1>#iU",$str,$match)) {
  5.     foreach ($match[2] as $sstr) {
  6.       $nsstr = "\r\n".str_repeat("\t",$layer+1).$sstr."\r\n".str_repeat("\t",$layer);
  7.       $build = str_replace($sstr,$nsstr,$build);
  8.       getDOM($build,$sstr,$layer);
  9.       }
  10.     }
  11.   }
  12.  
  13. // эмулируем отсутствие отступов и переносов
  14. $b = array("\r","\n","\t");
  15. $build = $str = str_replace($b,"",file_get_contents("file.html"));
  16.  
  17. $layer = -1;
  18.  
  19. getDOM($build,$str,$layer);
  20.  
  21. echo $build;
  22.  

Но это далеко от идеала.
Просто принцип...

(Отредактировано автором: 10 Августа, 2011 - 04:18:37)

 
 Top
reslear
Отправлено: 10 Августа, 2011 - 12:01:26
Post Id


Новичок


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


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

[+]


DeepVarvar да выдаёт что то вроде :

CODE (html):
скопировать код в буфер обмена
  1. <div>
  2.         <a href="http://"></a><a href="http://"></a><a href="http://"></a><div><a href="http://"></a>
  3. </div></div>


но второй код как нужно :

CODE (html):
скопировать код в буфер обмена
  1. <a href="http://">
  2.   <div>kkk</div>
  3. </a>
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB