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 :: Поделилить текст из БД на две части

 PHP.SU

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


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

> Без описания
harlam
Отправлено: 26 Января, 2011 - 17:32:24
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Авг. 2009  


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




Здравствуйте,
В БД (MySQL) текст
Нужно разбить текст на 2 части по принципу:
1 часть текста
Другая информация не относящиеся к тексту
2-я часть текста (продолжения 1 части)

Разбиение текста должно быть по метки в тексте.

Побывал переделать этот скрипт но не вышло, здесь текст разбивается по предложением.


CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $text = $mysql['text']; //текст в бд
  3.  
  4. $at=explode(". ", $text); //разделим весь текст на предложения и пишем в массив  
  5.  
  6. $count=count($at); //узнаём кол-во предложений в массиве  
  7.  
  8. for ($i=0; $i<$count; $i++){  
  9.      
  10.    $tout.=$at[$i].". ";  
  11.    if (strlen($tout)>=1000) { //тут предположительно будем делить по ~1000 знаков в блоке  
  12.         $fout[]=$tout; //пишем набор предложений, кол-во знаков в которых равно или больше 1000 в массив  
  13.         unset($tout);  
  14.     }  
  15.     // это нужно для записи последнего набора предложений, кол-во знаков в которых меньше 1000  
  16.     elseif(strlen($tout)<=1000 && $i==$count-1){  
  17.        $fout[]=$tout;    
  18.        unset($tout);  
  19.    }  
  20.  
  21.  
  22. }  
  23.  
  24. // Тут собственно пример вывода  
  25. //все блоки хранятся в массиве $fout  
  26.  
  27. //print_r($fout);  
  28.  
  29. echo strlen($fout[0]);  
  30. echo "<br />";  
  31. echo $fout[0];  
  32. echo "<hr><br /><br />";  
  33. echo strlen($fout[1]);  
  34. echo "<br />";  
  35. echo $fout[1];  
  36. echo "<hr><br /><br />";  
  37. echo strlen($fout[2]);  
  38. echo "<br />";  
  39. echo $fout[2];  
  40.  


Подскажите как это можно реализовать?
 
 Top
grefon
Отправлено: 26 Января, 2011 - 17:48:46
Post Id



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


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


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




Так а почему не разбить по метки с помощью того же explode("{метка}", $text)?


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
garvey
Отправлено: 26 Января, 2011 - 21:34:00
Post Id



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


Покинул форум
Сообщений всего: 528
Дата рег-ции: Май 2010  
Откуда: Minsk


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




Это не правильный подход. Делайте хорошую стабильную архитектуру. А что если в тексте попадется еще 100 таких меток? Не поленитесь создать в таблице еще одно поле. Это почти не повлияет на произволительность, но закроет эту брешь в архитектуре. В одном поле храните первую часть, во втором 2-ю.
 
 Top
XelaNimed
Отправлено: 26 Января, 2011 - 23:28:51
Post Id


Частый гость


Покинул форум
Сообщений всего: 136
Дата рег-ции: Сент. 2009  


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




harlam пишет:
Разбиение текста должно быть по метки в тексте.

Что за метка?! Просто слово или уникальное значение?!
Как-то делал следующим образом:
PHP:
скопировать код в буфер обмена
  1. $txt = '<p id="1">Dapibus amet urna er lorem a augue.</p>
  2.  
  3. <p id="2">Scelerisque scelerisque.</p>
  4.  
  5. <p id="3">Ultrices! Pulvinar, nec tempor, dapibus scelerisque cum, enim.</p>';
  6. $newTxt = '<p id="new">This is a new text</p>';
  7. $txt = preg_replace('/^(.*id="2".*?<\/p>)(.*$)/si','$1'.$newTxt.'$2',$txt);

Но не уверен, что это выглядит правильно. Чтоб Вам помочь или подсказать нужно побольше информации.
 
 Top
harlam
Отправлено: 27 Января, 2011 - 07:48:31
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Авг. 2009  


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




Метка должна быть как тег или что-то уникальное, не слово однозначно чтоб не было видно в тексте.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB