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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Выдрать самый большой кусок текста

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
event
Отправлено: 20 Июля, 2012 - 07:10:26
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 542
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Привет.
Есть такой текст:
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. Уолтер Уайт — преподаватель химии в школе. У него есть жена и сын-инвалид, жена ждет еще одного ребенка. Уолт уже не молод, и в этом возрасте часто бывают кризисы, тем более нужно кормить семью, а на зарплату преподавателя не разгуляешься, поэтому он вынужден подрабатывать на автомойке, где его же студенты над ним насмехаются, а еще сын, чью инвалидность тоже постоянно осмеивают. Его свояк работает в Управлении по борьбе с наркотиками и однажды предлагает поучаствовать в облаве на дом, где находится лаборатория по приготовлению метамфентамина. ...


Заранее спасибо.
 
 Top
PATCH
Отправлено: 20 Июля, 2012 - 07:18:51
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


Помог: 22 раз(а)




ии? в чем вопрос? или эт лучше отнести к разделу напишите за меня?)
 
 Top
vlom
Отправлено: 20 Июля, 2012 - 07:29:38
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 681
Дата рег-ции: Окт. 2010  
Откуда: Екатеринбург


Помог: 4 раз(а)




сначала разбей строку функцией

затем перебирая массив определяй длину строки функцией

начало есть дальше думаю додумаешь

(Отредактировано автором: 20 Июля, 2012 - 07:30:15)

 
 Top
armancho7777777 Супермодератор
Отправлено: 20 Июля, 2012 - 08:02:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




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. }

(Отредактировано автором: 20 Июля, 2012 - 08:04:12)

 
 Top
Panoptik
Отправлено: 20 Июля, 2012 - 08:09:55
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




судя по всему нужен таки всего один перевод строки


-----
Just do it
 
 Top
armancho7777777 Супермодератор
Отправлено: 20 Июля, 2012 - 08:26:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Panoptik пишет:
судя по всему нужен таки всего один перевод строки

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

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

Тут, на самом деле, вилами по воде написано:
если не переведены, то один перевод, если переведены, то 2.
 
 Top
event
Отправлено: 24 Июля, 2012 - 03:39:27
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 542
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Подкиньте код пожалуйста.
 
 Top
LIME
Отправлено: 24 Июля, 2012 - 05:28:21
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




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. }

(Отредактировано автором: 24 Июля, 2012 - 05:31:39)

 
 Top
armancho7777777 Супермодератор
Отправлено: 24 Июля, 2012 - 09:44:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




LIME пишет:
armancho7777777 там нумерация))

Я, почему-то, подумал что эту нумерацию ТС проставил,
а в оригинале её нет)
 
 Top
event
Отправлено: 24 Июля, 2012 - 23:19:53
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 542
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




LIME
Спс, как буду дома попробую твой вариант.
(Добавление)
LIME
Ой, извини нажал тебе спасибку, а подпись уже увидил потом. Голливудская улыбка
 
 Top
LIME
Отправлено: 24 Июля, 2012 - 23:22:53
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




удивительно как некоторые "спецы" не заметили что strlen($max) выполняется на каждой итерации и можно это сохранять в переменной
кто скажет почему это не не ускорит?
вопрос новичкам исключительно ))
(Добавление)
event дурак))
прощаю))
(Добавление)
?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB