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
Форумы портала PHP.SU :: Версия для печати :: Выдрать самый большой кусок текста
Форумы портала PHP.SU » » Вопросы новичков » Выдрать самый большой кусок текста

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

1. event - 20 Июля, 2012 - 07:10:26 - перейти к сообщению
Привет.
Есть такой текст:
CODE (text):
скопировать код в буфер обмена
  1. Информация о фильме
  2. Название: Во все тяжкие
  3. Оригинальное название: Breaking Bad
  4. Год выхода: 2012
  5. Жанр: драма, криминал
  6. Режиссер: Адам Бернштейн, Брайан Крэнстон
  7. В ролях: Брайан Крэнстон, Анна Ганн, Аарон Пол, Дин Норрис, Бетси Брандт, Эр Джей, Стивен Майкл Квезада, Кристен Риттер, Дэвид Хаус, Кармен Серано и др...
  8.  
  9. О фильме:
  10. Уолтер Уайт — преподаватель химии в школе. У него есть жена и сын-инвалид, жена ждет еще одного ребенка. Уолт уже не молод, и в этом возрасте часто бывают кризисы, тем более нужно кормить семью, а на зарплату преподавателя не разгуляешься, поэтому он вынужден подрабатывать на автомойке, где его же студенты над ним насмехаются, а еще сын, чью инвалидность тоже постоянно осмеивают. Его свояк работает в Управлении по борьбе с наркотиками и однажды предлагает поучаствовать в облаве на дом, где находится лаборатория по приготовлению метамфентамина. ...
  11.  
  12. Выпущено: США / AMC, Sony Pictures Television
  13. Продолжительность: ~00:47:00 серия
  14. Озвучивание: Профессиональное (многоголосое)
  15.  
  16. Файл
  17. Формат: AVI (XviD)
  18. Качество: WEB-DLRip
  19. Видео: 1 686 kb/s, 720x400
  20. Аудио: MPEG Audio Layer 3, 127kbps (6ch)


Мне нужно средствами PHP, выдрать из текста самый большой кусок, в этому случае это будет:
CODE (text):
скопировать код в буфер обмена
  1. Уолтер Уайт — преподаватель химии в школе. У него есть жена и сын-инвалид, жена ждет еще одного ребенка. Уолт уже не молод, и в этом возрасте часто бывают кризисы, тем более нужно кормить семью, а на зарплату преподавателя не разгуляешься, поэтому он вынужден подрабатывать на автомойке, где его же студенты над ним насмехаются, а еще сын, чью инвалидность тоже постоянно осмеивают. Его свояк работает в Управлении по борьбе с наркотиками и однажды предлагает поучаствовать в облаве на дом, где находится лаборатория по приготовлению метамфентамина. ...


Заранее спасибо.
2. PATCH - 20 Июля, 2012 - 07:18:51 - перейти к сообщению
ии? в чем вопрос? или эт лучше отнести к разделу напишите за меня?)
3. vlom - 20 Июля, 2012 - 07:29:38 - перейти к сообщению
сначала разбей строку функцией

затем перебирая массив определяй длину строки функцией
PHP:
скопировать код в буфер обмена
  1. strlen($array[$n])

начало есть дальше думаю додумаешь
4. armancho7777777 - 20 Июля, 2012 - 08:02:08 - перейти к сообщению
vlom, надо учесть, что ТС надо получить именно самый большой абзац.
Значит надо текст разбить по двум переводам строки.
PHP:
скопировать код в буфер обмена
  1. function max_paragraph ($text)
  2. {
  3.         $str_len == 0;
  4.         $str = '';
  5.         foreach(explode(PHP_EOL.PHP_EOL, $text) as $k => $v)
  6.         {
  7.                 if(mb_strlen($v) > $str_len)
  8.                 {
  9.                         $str_len = mb_strlen($v);
  10.                         $str = $v;
  11.                 }
  12.         }
  13.        
  14.         return $str;
  15. }
5. Panoptik - 20 Июля, 2012 - 08:09:55 - перейти к сообщению
судя по всему нужен таки всего один перевод строки
6. armancho7777777 - 20 Июля, 2012 - 08:26:58 - перейти к сообщению
Panoptik пишет:
судя по всему нужен таки всего один перевод строки

И как Вы это
Уолтер Уайт — преподаватель химии в школе. У него есть жена и сын-инвалид, жена ждет еще одного ребенка. Уолт уже не молод, и в этом возрасте часто бывают кризисы, тем более нужно кормить семью, а на зарплату преподавателя не разгуляешься, поэтому он вынужден подрабатывать на автомойке, где его же студенты над ним насмехаются, а еще сын, чью инвалидность тоже постоянно осмеивают. Его свояк работает в Управлении по борьбе с наркотиками и однажды предлагает поучаствовать в облаве на дом, где находится лаборатория по приготовлению метамфентамина. ...

получите используя в качестве разделителя один перевод строки?
Уверены, что эти строки не переведены?

Тут, на самом деле, вилами по воде написано:
если не переведены, то один перевод, если переведены, то 2.
7. event - 24 Июля, 2012 - 03:39:27 - перейти к сообщению
Подкиньте код пожалуйста.
8. LIME - 24 Июля, 2012 - 05:28:21 - перейти к сообщению
armancho7777777 там нумерация))
PHP:
скопировать код в буфер обмена
  1. $arr=explode(PHP_EOL,$str);
  2. $max='';
  3. foreach($arr as $v){
  4.     if (strlen($max)<strlen($v)){
  5.          $max=$v;
  6.     }
  7. }
9. armancho7777777 - 24 Июля, 2012 - 09:44:22 - перейти к сообщению
LIME пишет:
armancho7777777 там нумерация))

Я, почему-то, подумал что эту нумерацию ТС проставил,
а в оригинале её нет)
10. event - 24 Июля, 2012 - 23:19:53 - перейти к сообщению
LIME
Спс, как буду дома попробую твой вариант.
(Добавление)
LIME
Ой, извини нажал тебе спасибку, а подпись уже увидил потом. Голливудская улыбка
11. LIME - 24 Июля, 2012 - 23:22:53 - перейти к сообщению
удивительно как некоторые "спецы" не заметили что strlen($max) выполняется на каждой итерации и можно это сохранять в переменной
кто скажет почему это не не ускорит?
вопрос новичкам исключительно ))
(Добавление)
event дурак))
прощаю))
(Добавление)
?

 

Powered by ExBB FM 1.0 RC1