Разбить вывод текста . Регулярка и что еще ??

dima4321

Новичок
Всем привет !


Суть проблемы такова. Иногда ячейки (пункты, описания) которые выводятся из базы имеют большой вес и не хочется все это добро вешать на одну страницу уж слишком она становится тяжелой и длинной. Поэтому хочу разбить такую страничку в зависмотсти от условия на 2,3. или 4.

Вопрос к чему можно подвязаться с точки зрения условия . Длина строки в символах ?? кол-во строк ??

Как правильно записать это условие ?? естественно html должен быть валидным. Т.е. если обрыв..то обрыв после очередного </p> или </table> или </div> и т.п. Чтобы все было гораманично и фразы таблицы или блоки имели окончание.

Предполагаю, что еще нужна будет регулярка.

Как приблизительно соединить воедино.

Напомню контент берется из MYSQL конкретной ячейки.
 

tz-lom

Продвинутый новичок
разбей прежде чем класть в базу, MySQL это база а не парсер HTML
или если у тебя проблема не в том что "данные из базы медлено идут",а "данные медленно загружаются на клиента" то можно обойтись разбивкой перед отправкой,хотя судя по всему это не будет простая операция а значит стоит её кешировать (см выше)
 

weregod

unserializer
Как правильно записать это условие ?? естественно html должен быть валидным. Т.е. если обрыв..то обрыв после очередного </p> или </table> или </div> и т.п. Чтобы все было гораманично и фразы таблицы или блоки имели окончание.
расставляйте сепаратор руками в поле с "длинным" html, например
HTML:
...</table>
<!--###separator###-->
<p>...
 
  • Like
Реакции: AmdY

dima4321

Новичок
weregod
по поводу руками сепаратор ...это слишшком круто для меня. Мне нужна автоматизация процесса слишком много пунктов, чтобы растрачивать силы на человеческий труд. хочу положится на робота.


tz-lom

разбей прежде чем класть в базу, MySQL это база а не парсер HTML
Тогда будет сложно доставать.
Сейчас вывод прост. А каким он будет по твоей логике ???

PHP:
$page = $_GET['band'];

$sql = "SELECT * FROM groups WHERE NAME = '$page'";
  
  
   $data = mysql_query($sql); 
   $row = mysql_fetch_assoc($data); 
echo "<br><br>$row[TEXT]";
если у тебя проблема не в том что "данные из базы медлено идут",а "данные медленно загружаются на клиента" то можно обойтись разбивкой перед отправкой,хотя судя по всему это не будет простая операция а значит стоит её кешировать (см выше)
Суть для того чтобы просто оптимизировать страницу под поисковик. Слишком тяжелая плохо, также нет четкой синемантики.
Итог поисковик я думаю даже не станет ее брать в индекс.

Поэтому и хочу разбить.

А что криминально применять парсинг к ячейке MySQL ??
 

craz

Нестандартное звание
weregod
по поводу руками сепаратор ...это слишшком круто для меня. Мне нужна автоматизация процесса слишком много пунктов, чтобы растрачивать силы на человеческий труд. хочу положится на робота.


tz-lom


Тогда будет сложно доставать.
Сейчас вывод прост. А каким он будет по твоей логике ???

PHP:
$page = $_GET['band'];

$sql = "SELECT * FROM groups WHERE NAME = '$page'";
  
  
   $data = mysql_query($sql); 
   $row = mysql_fetch_assoc($data); 
echo "<br><br>$row[TEXT]";


Суть для того чтобы просто оптимизировать страницу под поисковик. Слишком тяжелая плохо, также нет четкой синемантики.
Итог поисковик я думаю даже не станет ее брать в индекс.

Поэтому и хочу разбить.

А что криминально применять парсинг к ячейке MySQL ??
http://dreamstrip.ru/cinemantica.htm я нашел!!! спасибо за новое слово!
 

tz-lom

Продвинутый новичок
Тогда будет сложно доставать.
Сейчас вывод прост. А каким он будет по твоей логике ???
вот нифига,какраз запрашивать будет просто,класть в базу будет не просто,но сколько раз кладём и сколько раз читаем?
 

dima4321

Новичок
tz-lom я понял тебя ))

думал вообще сначала отпарсить и передавать сессиями ---- но страницы не проиндексируются если не пойдут с 1 страницы.

+

если человек скинет другому человеку ссылку опять таки не основную а уже с переданным значением , то там будет пусто..((

короче пока остановился на этом:

Имею контент. он состоит только из <h1 2 3>) и тегов <p> после моего парсинга.

Теперь хочу разделить эту страницу как минимум на 2. Весь контент пока в $new3

PHP:
 preg_match('#(.+?<h[234]>.+?</h[234]>.+?<h[234]>.+?</h[234]>.+?<h[234]>.+?</h[234]>.+?)(<h[234]>.+)#si',$new3,$match);
  if(isset($match[1]))
  {
  echo $match[1];
  echo "2page <br>";
  echo $match[2];
  }
  else
  {
  echo $new3;
  
  }
  }


Короче по факту теперь вместо одной переменной $new3 , я имею как правило 2. ($match[1] $match[2])

Их я и должен привязать к определенному имени и id.

Как это было сделать с одной перменной -понятно.
А как сделать связку на 2 переменные . ставить еще одни столбик в mysql ???
Можно пример или мысль ??
Пожалуйста сжальтесь над честным человеком ))) ???
может пару строк скрипта мм..??)[
 

tz-lom

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

dima4321

Новичок
Вот вкратце вывод моего контента:

PHP:
$page = $_GET['band'];// получил переменную по ссылке методом get

$sql = "SELECT * FROM groups WHERE NAME = '$page'";
  
  
   $data = mysql_query($sql); 
   $row = mysql_fetch_assoc($data); 

 echo $row['ABOUT'];// хочу вывести контент , но он большой и хочу кго разделить как минимум на 2 части (2 страницы)
как правильно вывести данные ?? или даже так как лучше их положить в базу , чтобы потом вывести, При получении $_GET['band'].
Подрузамеватется оптимальный вариант чтобы не нагружать базу и т.п.
 

dima4321

Новичок
есть вот такая мысль. Скажите это нормальный прием или нет. Решил добавить 2 столбик для MYSQL ---- ABOUT2


page.php?band=$page PHP:
PHP:
<?php
 ini_set('display_errors',1); 
 error_reporting(E_ALL); 
  
  
 $page = $_GET['band'];// получил переменную по ссылке методом get
  
 $sql = "SELECT * FROM groups WHERE NAME = '$page'";
   
   
   $data = mysql_query($sql); 
   $row = mysql_fetch_assoc($data); 
  
  echo $row['ABOUT'];
  if(!empty($row['ABOUT2']))
  {
  <a href="page2.php?band=$page">page 2</a>
  }
  
 ?>



page2.php?band=$page
PHP:
PHP:
<?
 $page = $_GET['band'];
 $sql = "SELECT * FROM groups WHERE NAME = '$page'";
   
   $data = mysql_query($sql); 
   $row = mysql_fetch_assoc($data); 
   echo $row['ABOUT2'];
  
  <a href="page.php?band=$page">page1</a>
  
  ?>
 

tz-lom

Продвинутый новичок
$page = $_GET['band'];// получил переменную по ссылке методом get

$sql = "SELECT * FROM groups WHERE NAME = '$page'";
так запросы не делают,см SQL injection

в приведённом примере ты ничего не сэкономил в плане нагрузки на базу,а значит стоит придумать как улучьшить код (например убрать *) или же разбивать текст перед выводом не мучаясь хранить его по частям в базе
 
Сверху