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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Со всех элементов массива выбрать n символов

Сообщения:  [1-4] 

 
 автор: DDK   (15.05.2006 в 22:47)   письмо автору
 
   для: Terri   (15.05.2006 в 18:55)
 

Вот теперь более понятна суть задачи :) Тогда поступаем так:

<?php 
$maxlen 
30
$text '<p>Текст текст текст текст</p><p>Текст текст текст текст текст текст</p><p>Текст текст текст текст</p>'

preg_match_all("|<p>(.*?)</p>|"$text $matches); 

$output "";
for(
$i=0$i<count($matches[0]); $i++) {
    
$output .= $matches[0][$i];
    if(
strlen($output) >= $maxlen) break;
}

echo 
$output
?> 

   
 
 автор: Terri   (15.05.2006 в 18:55)   письмо автору
 
   для: DDK   (15.05.2006 в 18:38)
 

не совсем так
нужно так чтобы самом конце был последний тег </p>, не просто обрезан и незакончен текст(параграф)

вы уж извините меня, за моё непонятное объяснение, нужно как, брать текст из каждого элемента пока не наберем нужное кол-во символов - как набрали - докопируем текущий абзац (на котором набралось допустим 300 символов) и все.

Т.е. представь скопировали 2 абзаца, в середине 3-его у нас набралось допустим 300 символов, мы берем все 3 абзаца. А остальные 4, 5 и т.д. не берем. Таким образом получаем законченный текст и плюс разнабой длинны

я заранее все абзаци поместил в массив, тоесть один абзац это один элемент массива

$matches['<p>Текст1 текст1 текст1 текст1</p><p>Текст2 текст2 текст2</p>'];
$matches['<p>Текст2 текст2 текст2 текст2 текст2 текст2</p>'];
$matches['<p>Текст3 текст3 текст3 текст3</p>'];

   
 
 автор: DDK   (15.05.2006 в 18:38)   письмо автору
 
   для: Terri   (15.05.2006 в 16:59)
 

Если я правильно понял вашу истинную задачу (а почему я должен кстати гадать ?!), то вам нужно сделать просто так:

<?php 
$n 
30;
$text '<p>Текст текст текст текст</p><p>Текст текст текст текст текст текст</p><p>Текст текст текст текст</p>';

preg_match_all("|<p>(.*?)</p>|"$text $matches);

$text implode(""$matches[1]);
$text substr($text0$n);
echo 
$text;
?> 

Заметьте, регулярное выражение у вас тоже было немного неправильно написано.

   
 
 автор: Terri   (15.05.2006 в 16:59)   письмо автору
 
 

Имеется массив с текстом, нужно какимто образом пребрать все элементы массива через цикл, перебирая через цикл,
подсчитывать текст при помощи strlen() как только будет 30 символов так цикл останавливать. Я пробывал как мог
но ничего неполучается, тут думаю наверное нужно через рекурсию делать, но я даже незнаю как можно сделать

$text = '<p>Текст текст текст текст</p><p>Текст текст текст текст текст текст</p><p>Текст текст текст текст</p>';
preg_match('~(<p>(.*?)</p>){,2}~', $text , $matches);


[php]
for($i=0; $i<count($matches); $i++){
$contents_arr[] .= $matches[$i];
if(strlen($contents_arr[$i]) < 35){
$contents = $contents_arr[$i];
}else{
$contents = $contents_arr[$i];
}
}
echo $contents;
[/php]

   

Сообщения:  [1-4] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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