|
|
|
| не соображу никак,
есть текст (количество слов и предложения всегда разное)
-----
Других заманивают "пряниками" навроде высокой зарплаты и возможности в минимальные сроки получить научную степень. Кто-то бежит на Остров от прошлой жизни, но таких меньше всего.
Остров - по сути, одна большая лечебница, обнесенная по периметру высоким бетонным забором. В некоторых местах он входит в воду, там устроены ворота, чтобы пропускать суда, если приплывут.
Приплывают редко. Чаще всего на Остров именно прилетают, а уж покидают его - единицы. Однако проект по локализации всех неизлечимых психбольных страны оказался неожиданно удачным: остров (тогда еще - не Блаженных) всё равно ни на что больше не годился. Здесь жило несколько семей "аборигенов", впоследствии охотно подрядившихся работать на клинику, поставлять туда свежие продукты и проч.
-----
как реализовать вставку одно разделителя в любом месте текста - @@@ (не вначале и не в конце, где то в середине но не строго)
пока использую такую функцию
$new_text=preg_replace("/\./", "@@@", $new_text_bez_razdelit,1);
но здесь разделитель всегда после первого предложения,
ничего умнее не могу придумать, хелп | |
|
|
|
|
|
|
|
для: Расшифровка
(09.09.2008 в 11:17)
| | А зачем этот разделитель? Не для того ли, чтобы вевести на страницу часть текста? | |
|
|
|
|
|
|
|
для: sim5
(09.09.2008 в 11:48)
| | да часть выводится как превью в категории до разделителя
типа вордпресса разделитель <--more--> | |
|
|
|
|
|
|
|
для: Расшифровка
(09.09.2008 в 12:17)
| | А зачем тогда разделитель - берите для анонса из базы только часть текста, например 200-300 символов, добавляйте ссылку "Далее...", по которой можно будет почитать все. | |
|
|
|
|
|
|
|
для: sim5
(09.09.2008 в 12:35)
| | да
то что нужно,
а какой лучше функцией )) ? | |
|
|
|
|
|
|
|
для: Расшифровка
(09.09.2008 в 12:47)
| |
$nеw_tехt = substr($tехt, 0, 200);
|
| |
|
|
|
|
|
|
|
для: 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);
//
|
| |
|
|
|
|
|
|
|
для: Расшифровка
(09.09.2008 в 13:16)
| | Ужас! Зачем он вам этот разделитель? Хотите разделить тескт пополам? Так разве трудно узнать длину текста (посимвольно, пословно), разделить ее на соответветсвующую часть и получить часть строки? Помните - если можно что-то сделать без рег. выражений, то забудьте, что они существуют. | |
|
|
|
|
|
|
|
для: sim5
(09.09.2008 в 13:21)
| | вообще тут скорость не так актуальна поскольку,
обработка происходит один раз, при подготовке файлов для движка,
по поводу оптимизации кода, собствено блин не могу
1. выполнить иначе, с помощью других функций
2. рандомность втыкнуть | |
|
|
|
|
|
|
|
для: Расшифровка
(09.09.2008 в 12:47)
| | Непосредственно в запросе на выборку из базы, например:
"SELECT LEFT(fieldname, length) FROM table WHERE..." | |
|
|
|
|
|
|
|
для: sim5
(09.09.2008 в 13:15)
| | работает на файлах, но без разделителя нельзя , он необходим еще в нескольких вычислениях, | |
|
|
|
|
|
|
|
для: Расшифровка
(09.09.2008 в 13:19)
| |
<?
//обрежем текст до 200 символов
$a = substr($text, 0, 200);
//найдем позицию последнего пробела в этой строке
$p = strripos($a, " ");
//обрежем уже урезанную строку до позиции найденного пробела
$new_text = substr($a, 0, $p);
?>
|
| |
|
|
|
|
|
|
|
для: Mehelson
(09.09.2008 в 13:36)
| | хороший вариант, опробываю, но
как без регулярок добавить разделитель?
причем в середину текста, или около нее не зная размеров текста (от 100 до 10000 символов) | |
|
|
|
|
|
|
|
для: Расшифровка
(09.09.2008 в 13:52)
| | strlen(string) вам поможет. | |
|
|
|
|
|
|
|
для: Расшифровка
(09.09.2008 в 13:52)
| |
<?php
$len = strlen($text)/2; // ;)
//обрежем половину текста
$a = substr($text, 0, $len);
//найдем позицию последнего пробела в этой строке
$p = strripos($a, " ");
//обрежем уже урезанную строку до позиции найденного пробела
$new_text = substr($a, 0, $p);
?>
|
| |
|
|
|
|
|
|
|
для: Mehelson
(09.09.2008 в 14:42)
| | strripos() зачем применяете? Пробелы бывают разные? | |
|
|
|
|
|
|
|
для: BinLaden
(09.09.2008 в 16:41)
| | ну да :) конечно лучше будет strrpos | |
|
|
|
|
|
|
|
для: Mehelson
(09.09.2008 в 17:15)
| | Не надо, а вдруг в верхнем регистре пробел на 8 рх выше ? :) | |
|
|
|
|
|
|
|
для: Mehelson
(09.09.2008 в 14:42)
| | Блин или я чегото не понимаю
как лучше вставить разделитель? @@@ без регваров
номер пробела узнали, а дальше я техникой не владею
у меня задача, раздербанить папку с файлами, в каждом файле по тексту,
что рядом лежали аналогичные файлы, но с разделителем,
с регварами хорошо но надо развиваться | |
|
|
|
|
|
|
|
для: Расшифровка
(09.09.2008 в 18:18)
| | Вам не нужен разделитель :) | |
|
|
|
|
|
|
|
для: BinLaden
(09.09.2008 в 19:26)
| | ))
ну вообще если уж заморачиваться со скоростью,
то по рангам будет так
1. самое быстрое
вывести текст до разделителя (разделитель уже в файле есть)
2. вывести однин элемент массива из двух пусть и добытого за счет разделителя, будет по быстрее
3. чем мероприятие по определению длинны текста, поиска нужного елемента и последующего вывода,
По тому и прошу)) вставить разделить, к томуже если работать с вордпрессом он там необходим | |
|
|
|
|
|
|
|
для: Расшифровка
(09.09.2008 в 19:35)
| | Ну, если бы разделить сам вставлялся, тогда бы ваши утвреждения можно было бы принять. Но вы сперва вставьте, а уже потом "до", "элемент массива"... Ну что вы несете, он вам и близко ненужен этот разделитель. Вам достаточно сделать то, что вам уже "разжевали". | |
|
|
|