|
|
|
| Доброго времени суток...
Вопрос в слейдущем!
Имеется форма куда ломака пользователь забивает статью типа:
Хочется верить, что составители этого сборника просто не очень хорошо представляют, что такое "Новая волна" ("New Wave") и какую роль она сыграла в истории мировой фантастики - оттого и используют абсолютно не по назначению этот прославленный брэнд. На самом деле экспериментальных, шокирующих текстов в сборнике "Аэлита-3" раз-два и обчелся. Да и те вышли из-под пера не молодых авторов, а "гостей номера", Геннадия Прашкевича и Святослава Логинова. Основная же часть произведений, включенных в эту книгу - рассказы и повести начинающих фантастов, поданные на конкурс, проводившийся нынешней весной организаторами свердловского фестиваля фантастики "Аэлита". Дело, безусловно, важное и нужное, я бы даже сказал - благое. Кто знает, может быть, именно из этих авторов и вырастут будущие лауреаты "Аэлиты". Тем более что уровень произведений вполне соответствует уровню какой-нибудь сетевой "Грелки" (за вычетом текстов, написанных мэтрами, разумеется). Но все-таки дезориентировать потенциального читателя уже самим названием, пожалуй, не стоило. Да и более тщательный отбор произведений-финалистов этой книге пошел бы только на пользу.
при обработке формы
$words = $_POST['add_product_desc'];
|
необходимо отсчитать 3 строки текста и присвоить их переменной к примеру $smaltxt
остальное записать в переменную $bigtxt
*******************
2 вариант:
все тоже только отсчитать 100 слов и все записать в $smaltxt
остальное в $bigtxt
----
Заранее спасибо! | |
|
|
|
|
|
|
|
для: ShadowXak
(06.12.2006 в 09:07)
| | >> отсчитать 3 строки
А что по вашему строка? Имеется ввиду предложение?
<?php
$str = 'Хочется верить, что составители этого сборника просто не очень хорошо представляют,
что такое "Новая волна" ("New Wave") и какую роль она сыграла в истории мировой фантастики -
оттого и используют абсолютно не по назначению этот прославленный брэнд. На самом деле
экспериментальных, шокирующих текстов в сборнике "Аэлита-3" раз-два и обчелся. Да и те
вышли из-под пера не молодых авторов, а "гостей номера", Геннадия Прашкевича и Святослава
Логинова. Основная же часть произведений, включенных в эту книгу - рассказы и повести
начинающих фантастов, поданные на конкурс, проводившийся нынешней весной
организаторами свердловского фестиваля фантастики "Аэлита". Дело, безусловно, важное и
нужное, я бы даже сказал - благое. Кто знает, может быть, именно из этих авторов и вырастут
будущие лауреаты "Аэлиты". Тем более что уровень произведений вполне соответствует уровню
какой-нибудь сетевой "Грелки" (за вычетом текстов, написанных мэтрами, разумеется). Но все-
таки дезориентировать потенциального читателя уже самим названием, пожалуй, не стоило. Да
и более тщательный отбор произведений-финалистов этой книге пошел бы только на пользу.';
// три предложения - куски текста до точек.
if (preg_match("#((.*?\.){3})(.*)$#s", $str, $regs))
echo $regs[1], "<p>", $regs[3];
// сто слов - куски текста между пробелами.
if (preg_match("#((.*?[\s]+){100})#s", $str, $regs))
echo "<p>", $regs[1];
?>
|
| |
|
|
|
|
|
|
|
для: ShadowXak
(06.12.2006 в 09:07)
| | Мысли по поводу.
3 строки - это максимум 40-50 слов.
В $bigtxt - лучше записывать весь текст, а не остаток. Меньше проблем.
А при необходимости уже извлекать статью и "откусывать" от неё $smaltxt
Откусывать я бы рекомендовал не слов, а символов 300-400. Это как раз в среднем 6-7 букв в слове * 50 слов. А потом с конца искать ". " - точка-пробел - разделитель предложений. Или просто точку.
Если не нашлось, то искать первую попавшуюся вперёд, чтобы было законченное предложение.
Ну, а если длина строки критична, то потом можно всё равно обрубить по нужной длине.
Попадает в пределы - получаются целые предложения. Не попадает - обрубается.
<?
$bigtxt='Хочется верить [пример откушен] только на пользу.';
$sizesmall=400;
$smalltxt=substr($big, 0, $sizesmall);
$long=strrpos($smalltxt, ".");
if ($long==0) {
$long=strpos($big, ".", $sizesmall);
}
$smalltxt=substr($big, 0, $long+1);
echo $smalltxt;
?>
|
Вот загони сюда в $bigtxt свой кусок текста и поиграй с параметром $sizesmall=400...300...200 | |
|
|
|
|
|
|
|
для: tuder
(06.12.2006 в 09:44)
| | нет вы непоняли =)
дело в том что текст забиваеться в форму и после перед записью в базу данных мне необходимо его порезать и записать в малость измененном фомате:
<? $txt =$smltext."[razdel]".$bigtext; ?>
|
Данные преобразованные взаписать в таблицу.
з.ы. на фронте идет выведение полного текста, но так как таблица имеет сложную структуру, то вот и приходится резать и всавлять уже в верхнюю ячейку все до раздела, а в другую все после
з.ы. вот и необходимо именно 3 строки, а не три предложения, ну или в крайнем случае по словам резать (но тут хуже, т.к. из-за "а, в, с, по, до !" количество будет 10, а строки токо 2 сломаеться дизайн =() | |
|
|
|
|
|
|
|
для: ShadowXak
(06.12.2006 в 10:07)
| | В том тексте, что вы привели всего одна строка! | |
|
|
|
|
|
|
|
для: ShadowXak
(06.12.2006 в 10:07)
| | Тогда делай не по точке, а по пробелу. Чтобы "разрыв" был не на середине слова.
И подбери нужное количество символов, выводимое в качестве "трёх строк", а не слов.
И в конце моего примера сделай
$bigtxt=substr_replace($bigtxt, "", 0, $long+1);
|
Вот и будут нужные куски. | |
|
|
|
|
|
|
|
для: tuder
(06.12.2006 в 10:44)
| |
<?
// Порежем текст на 2 части - потом вставим разделитель и снова соединим!
$big = $_POST['add_product_desc'];
$sizesmall=100;
$smalltxt=substr($big, 0, $sizesmall);
$long=strrpos($smalltxt, " ");
if ($long==0) {
$long=strpos($big, " ", $sizesmall);
}
$smalltxt=substr($big, 0, $long+1);
$bigtxt=substr_replace($big, "", 0, $long+1);
// Конец порезки ;)
// Соединяем с вклейкой [razdelitel] через 100 символов + & - до окончания слова
$fulltext = ''.$smalltxt."[razdelitel]".$bigtxt.'';
?>
|
Ну вот полностью рабочий код!
Всем пасибо кто принял участие )) | |
|
|
|
|
|
|
|
для: ShadowXak
(06.12.2006 в 13:42)
| | Однако убери вот здесь +1
$smalltxt=substr($big, 0, $long+1);
|
- это нужно было, чтобы точка не терялась. А пробел-то зачем тягать? Всё равно там вместо него разделитель встанет. | |
|
|
|
|
|
|
|
для: tuder
(06.12.2006 в 13:48)
| | ога я сам уже поправил =) | |
|
|
|
|