Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: вставка разделителя в текст
 
 автор: Расшифровка   (09.09.2008 в 11:17)   письмо автору
 
 

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

-----
Других заманивают "пряниками" навроде высокой зарплаты и возможности в минимальные сроки получить научную степень. Кто-то бежит на Остров от прошлой жизни, но таких меньше всего.
Остров - по сути, одна большая лечебница, обнесенная по периметру высоким бетонным забором. В некоторых местах он входит в воду, там устроены ворота, чтобы пропускать суда, если приплывут.
Приплывают редко. Чаще всего на Остров именно прилетают, а уж покидают его - единицы. Однако проект по локализации всех неизлечимых психбольных страны оказался неожиданно удачным: остров (тогда еще - не Блаженных) всё равно ни на что больше не годился. Здесь жило несколько семей "аборигенов", впоследствии охотно подрядившихся работать на клинику, поставлять туда свежие продукты и проч.
-----

как реализовать вставку одно разделителя в любом месте текста - @@@ (не вначале и не в конце, где то в середине но не строго)

пока использую такую функцию

$new_text=preg_replace("/\./", "@@@", $new_text_bez_razdelit,1);

но здесь разделитель всегда после первого предложения,
ничего умнее не могу придумать, хелп

  Ответить  
 
 автор: sim5   (09.09.2008 в 11:48)   письмо автору
 
   для: Расшифровка   (09.09.2008 в 11:17)
 

А зачем этот разделитель? Не для того ли, чтобы вевести на страницу часть текста?

  Ответить  
 
 автор: Расшифровка   (09.09.2008 в 12:17)   письмо автору
 
   для: sim5   (09.09.2008 в 11:48)
 

да часть выводится как превью в категории до разделителя

типа вордпресса разделитель <--more-->

  Ответить  
 
 автор: sim5   (09.09.2008 в 12:35)   письмо автору
 
   для: Расшифровка   (09.09.2008 в 12:17)
 

А зачем тогда разделитель - берите для анонса из базы только часть текста, например 200-300 символов, добавляйте ссылку "Далее...", по которой можно будет почитать все.

  Ответить  
 
 автор: Расшифровка   (09.09.2008 в 12:47)   письмо автору
 
   для: sim5   (09.09.2008 в 12:35)
 

да
то что нужно,
а какой лучше функцией )) ?

  Ответить  
 
 автор: Mehelson   (09.09.2008 в 12:50)   письмо автору
 
   для: Расшифровка   (09.09.2008 в 12:47)
 

$nеw_tехt = substr($tехt, 0, 200);

  Ответить  
 
 автор: Расшифровка   (09.09.2008 в 13:16)   письмо автору
 
   для: Mehelson   (09.09.2008 в 12:50)
 

$nеw_tехt = substr($tехt, 0, 200);
как вариант да, но это же на полуслове,

но разделитель все же нужен
cделал такой вариант, правда разделитель делит текст ровно пополам



//
$allwords=explode(" ", $new_text_bez_razdelit);

$nomer_slova_v_centre=count ($allwords)/2;


$new_text=preg_replace("/($allwords[$nomer_slova_v_centre])/", "$1,@@@", $new_text_bez_razdelit,1);

//

  Ответить  
 
 автор: sim5   (09.09.2008 в 13:21)   письмо автору
 
   для: Расшифровка   (09.09.2008 в 13:16)
 

Ужас! Зачем он вам этот разделитель? Хотите разделить тескт пополам? Так разве трудно узнать длину текста (посимвольно, пословно), разделить ее на соответветсвующую часть и получить часть строки? Помните - если можно что-то сделать без рег. выражений, то забудьте, что они существуют.

  Ответить  
 
 автор: Расшифровка   (09.09.2008 в 13:29)   письмо автору
 
   для: sim5   (09.09.2008 в 13:21)
 

вообще тут скорость не так актуальна поскольку,
обработка происходит один раз, при подготовке файлов для движка,

по поводу оптимизации кода, собствено блин не могу
1. выполнить иначе, с помощью других функций
2. рандомность втыкнуть

  Ответить  
 
 автор: sim5   (09.09.2008 в 13:15)   письмо автору
 
   для: Расшифровка   (09.09.2008 в 12:47)
 

Непосредственно в запросе на выборку из базы, например:
"SELECT LEFT(fieldname, length) FROM table WHERE..."

  Ответить  
 
 автор: Расшифровка   (09.09.2008 в 13:19)   письмо автору
 
   для: sim5   (09.09.2008 в 13:15)
 

работает на файлах, но без разделителя нельзя , он необходим еще в нескольких вычислениях,

  Ответить  
 
 автор: Mehelson   (09.09.2008 в 13:36)   письмо автору
 
   для: Расшифровка   (09.09.2008 в 13:19)
 


<?
//обрежем текст до 200 символов
$a substr($text0200);
//найдем позицию последнего пробела в этой строке
$p strripos($a" ");
//обрежем уже урезанную строку до позиции найденного пробела
$new_text substr($a0$p);
?>

  Ответить  
 
 автор: Расшифровка   (09.09.2008 в 13:52)   письмо автору
 
   для: Mehelson   (09.09.2008 в 13:36)
 

хороший вариант, опробываю, но
как без регулярок добавить разделитель?
причем в середину текста, или около нее не зная размеров текста (от 100 до 10000 символов)

  Ответить  
 
 автор: sim5   (09.09.2008 в 14:01)   письмо автору
 
   для: Расшифровка   (09.09.2008 в 13:52)
 

strlen(string) вам поможет.

  Ответить  
 
 автор: Mehelson   (09.09.2008 в 14:42)   письмо автору
 
   для: Расшифровка   (09.09.2008 в 13:52)
 

<?php
$len 
strlen($text)/2// ;)
//обрежем половину текста
$a substr($text0$len);
//найдем позицию последнего пробела в этой строке
$p strripos($a" ");
//обрежем уже урезанную строку до позиции найденного пробела
$new_text substr($a0$p);
?>

  Ответить  
 
 автор: BinLaden   (09.09.2008 в 16:41)   письмо автору
 
   для: Mehelson   (09.09.2008 в 14:42)
 

strripos() зачем применяете? Пробелы бывают разные?

  Ответить  
 
 автор: Mehelson   (09.09.2008 в 17:15)   письмо автору
 
   для: BinLaden   (09.09.2008 в 16:41)
 

ну да :) конечно лучше будет strrpos

  Ответить  
 
 автор: sim5   (09.09.2008 в 17:30)   письмо автору
 
   для: Mehelson   (09.09.2008 в 17:15)
 

Не надо, а вдруг в верхнем регистре пробел на 8 рх выше ? :)

  Ответить  
 
 автор: Расшифровка   (09.09.2008 в 18:18)   письмо автору
 
   для: Mehelson   (09.09.2008 в 14:42)
 

Блин или я чегото не понимаю
как лучше вставить разделитель? @@@ без регваров
номер пробела узнали, а дальше я техникой не владею


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

  Ответить  
 
 автор: BinLaden   (09.09.2008 в 19:26)   письмо автору
 
   для: Расшифровка   (09.09.2008 в 18:18)
 

Вам не нужен разделитель :)

  Ответить  
 
 автор: Расшифровка   (09.09.2008 в 19:35)   письмо автору
 
   для: BinLaden   (09.09.2008 в 19:26)
 

))
ну вообще если уж заморачиваться со скоростью,

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

2. вывести однин элемент массива из двух пусть и добытого за счет разделителя, будет по быстрее

3. чем мероприятие по определению длинны текста, поиска нужного елемента и последующего вывода,

По тому и прошу)) вставить разделить, к томуже если работать с вордпрессом он там необходим

  Ответить  
 
 автор: sim5   (09.09.2008 в 19:43)   письмо автору
 
   для: Расшифровка   (09.09.2008 в 19:35)
 

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

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования