Помощник
|
PHP разбить текст по предложениям. |
DeimosFobos |
9.8.2010, 21:56;
Ответить: DeimosFobos
Сообщение
#12
|
|
centurion
во держите самую быструю версию из всех, что тут $text = file_get_contents('text.txt'); preg_match_all("/.*[.?!]{1,}+/U", $text, $array); $randnum = rand(3,6); $nownum = 0; $lc = 0; foreach( $array as $line ) { $line = trim($line); if($line) { if($nownum >= $randnum) { $randnum = rand(3,6); $nownum = 0; $lc++; } $lines[$lc] .= $line; $nownum++; } } print_r($lines); 1000 повторений 'webpavilion': 0.529 сек. 1000 повторений 'DeimosFobos version 1.0': 0.337 сек. 1000 повторений 'DeimosFobos version 1.1': 0.174 сек. |
|
|
webpavilion |
9.8.2010, 22:11;
Ответить: webpavilion
Сообщение
#13
|
|
DeimosFobos, быстрая - да. правильная - нет!
array 0 => array 0 => string 'SWOT-анализ раскручивает потребительский рынок, используя опыт предыдущих кампаний.' (length=152) 1 => string ' Продуктовый ассортимент, несмотря на внешние воздействия, интуитивно понятен.' (length=145) 2 => string ' Гелиоцентрическое расстояние, сублимиpуя с повеpхности ядpа кометы, просветляет сарос, используя опыт предыдущих кампаний.' (length=226) 3 => string ' Часовой угол, в рамках сегодняшних воззрений, синхронно образует астероидный годовой параллакс, таким образом объектом имитации является число длительностей в каждой из относительно автономных ритмогрупп ведущего голоса.' (length=412) 4 => string ' Флажолет неравномерен.' (length=43) 5 => string ' Стимулирование коммьюнити варьирует терминатор, это довольно часто наблюдается у сверхновых звезд второго типа.' (length=209) 6 => string ' Ось, согласно традиционным представлениям, представляет собой длительностный секстант, данное соглашение было заключено на 2-й международной конференции "Земля из космоса - наиболее эффективные решения".' (length=376) 7 => string ' Векторно-зеркальная синхронность, и это особенно заметно у Чарли Паркера или Джона Колтрейна, жизненно просветляет целевой сегмент рынка, благодаря широким мелодическим скачкам.' (length=330) 8 => string ' Как предсказывают футурологи крещендирующее хождение спонтанно детерминирует терминатор, на этих моментах останавливаются Л.' (length=235) 9 => string 'А.' (length=3) 10 => string 'Мазель и В.' (length=19) 11 => string 'А.' (length=3) 12 => string 'Цуккерман в своем "Анализе музыкальных произведений".' (length=98) 13 => string ' Как отмечает Майкл Мескон, пуанта изящно гасит социальный статус, таким образом конструктивное состояние всей музыкальной ткани или какой-либо из составляющих ее субструктур (в том числе: временнoй, гармонической, динамической, тембровой, темповой) возникает как следствие их вы'... (length=602) 14 => string ' Зенитное часовое число использует Ганимед, хотя это довольно часто напоминает песни Джима Моррисона и Патти Смит.' (length=210) 15 => string ' Кульминация прочно продолжает дорийский эксцентриситет, однако сами песни забываются очень быстро.' (length=185) 16 => string ' Бизнес-план последовательно представляет собой радиант, о чем подробно говорится в книге М.' (length=169) 17 => string 'Друскина "Ганс Эйслер и рабочее музыкальное движение в Германии".' (length=119) 18 => string ' Параллакс сбалансирован.' (length=47) 19 => string 'Иными словами, интервально-прогрессийная континуальная форма индуктивно тормозит флэнжер, хотя это довольно часто напоминает песни Джима Моррисона и Патти Смит.' (length=298) 20 => string ' Имидж предприятия, на первый взгляд, перечеркивает непреложный популяционный индекс, но если бы песен было раз в пять меньше, было бы лучше для всех.' (length=272) 21 => string ' Флюгель-горн многопланово позиционирует миксолидийский принцип восприятия, а после исполнения Утесовым роли Потехина в "Веселых ребятах" слава артиста стала всенародной.' (length=316) 22 => string ' Конечно, нельзя не принять во внимание тот факт, что фаза продуцирует мономерный побочный PR-эффект, не считаясь с затратами.' (length=227) 23 => string ' Глиссандо переворачивает мнимотакт, но кольца видны только при 40–50.' (length=126) 24 => string ' Раскрутка охватывает хроматический спектральный класс, не считаясь с затратами.' (length=149) 25 => string ' Отвесная линия пока плохо продолжает афелий , оптимизируя бюджеты.' (length=123) 26 => string ' Действительно, процессуальное изменение поддерживает шоу-бизнес, учитывая, что в одном парсеке 3,26 световых года.' (length=208) 27 => string ' Высота прекрасно переворачивает болид , оптимизируя бюджеты.' (length=113) 28 => string ' Различное расположение специфицирует вращательный параметр, о чем подробно говорится в книге М.' (length=178) 29 => string 'Друскина "Ганс Эйслер и рабочее музыкальное движение в Германии".' (length=119) 30 => string ' Весеннее равноденствие , а там действительно могли быть видны звезды, о чем свидетельствует Фукидид решает параллакс, осознав маркетинг как часть производства.' (length=295) 31 => string ' Каллисто вызывает контент, данное соглашение было заключено на 2-й международной конференции "Земля из космоса - наиболее эффективные решения".' (length=263) 32 => string ' Производство, и это особенно заметно у Чарли Паркера или Джона Колтрейна, изменяет типичный динамический эллипсис, используя опыт предыдущих кампаний.' (length=279) рвет строки на отчествах прогоните у себя мой вариант 1.1 $new = array();
preg_match_all("#(.+)[\.!?](\s{0,3}|$)#SUu",$intxt,$match); $txt = $match[0]; $count = count($txt); $start = 0; $rand = mt_rand(3, 6); while ($start<=$count) { $new[] = implode(' ', array_slice($txt,$start, $rand)); $start += $rand; $rand = mt_rand(3, 6); } $last = count($new)-1; if ($new[$last] == '') unset ($new[$last]); -------------------- Не ведитесь, cамопис это почти всегда плохо! Делаю сайты на Drupal 7.x (очень дорого) |
|
|
DeimosFobos |
9.8.2010, 22:50;
Ответить: DeimosFobos
Сообщение
#14
|
|
прогоните у себя мой вариант 1.1 Не работает Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) ) рвет строки на отчествах рвет т.к найдены заданные символы: чтобы не рвало, можно preg_match_all("/.*[.?!]{1,}+/U", $text, $array); заменить на: preg_match_all("/.*[.?!]{1,}+\s/U", $text, $array);
Сообщение отредактировал DeimosFobos - 9.8.2010, 22:47 |
|
|
webpavilion |
9.8.2010, 22:53;
Ответить: webpavilion
Сообщение
#15
|
|
у меня работает:
<?php function r ($timestart,$timestop,$name) { global $p; echo "$p повторений '$name': ", round(($timestop-$timestart), 3), ' сек.<br>'; } $p = 1000; $path = 'file.txt'; $intxt = file_get_contents($path); $text = $intxt; #--------------------------------------------------------- $timestart = microtime(true); for($t = 0; $t < $p; $t++) { unset ($new); preg_match_all("#(.+)[\.!?](\s{0,3}|$)#SUu",$intxt,$match); $txt = $match[0]; $count = count($txt); $start = 0; $rand = mt_rand(3, 6); while ($start<=$count) { $new[] = implode(' ', array_slice($txt,$start, $rand)); $start += $rand; $rand = mt_rand(3, 6); } $last = count($new)-1; if ($new[$last] == '') unset ($new[$last]); } r($timestart, microtime(true), 'webpavilion 1.1'); #--------------------------------------------------------- $timestart = microtime(true); for($t = 0; $t < $p; $t++) { preg_match_all("/.*[.?!]{1,}+/U", $text, $array); $randnum = rand(3,6); $nownum = 0; $lc = 0; foreach( $array as $line ) { $line = trim($line); if($line) { if($nownum >= $randnum) { $randnum = rand(3,6); $nownum = 0; $lc++; } $lines[$lc] .= $line; $nownum++; } } } r($timestart, microtime(true), 'DeimosFobos 1.1 (<b>error</b>)'); #--------------------------------------------------------- $timestart = microtime(true); for($t = 0; $t < $p; $t++) { $newtext= preg_replace("/([.?!])/", "$1{znak}", $text); $array = explode('{znak}', $newtext); $count = count($array); $randnum = rand(3,6); $nownum = 0; $lc = 0; foreach( $array as $line ) { $line = trim($line); if($line) { if($nownum >= $randnum) { $randnum = rand(3,6); $nownum = 0; $lc++; } $lines[$lc] .= $line; $nownum++; } } } r($timestart, microtime(true), 'DeimosFobos 1.0'); #--------------------------------------------------------- $timestart = microtime(true); for($t = 0; $t < $p; $t++) { unset ($new); $txt = preg_split('#(?<=(\.|\!|\?))\Ss#s', $intxt); $count = count($txt); $start = 0; $rand = mt_rand(3, 6); while ($start<=$count) { $new[] = implode(' ', array_slice($txt,$start, $rand)); $start += $rand; $rand = mt_rand(3, 6); } $last = count($new)-1; if ($new[$last] == '') unset ($new[$last]); } r($timestart, microtime(true), 'webpavilion 1.0'); #--------------------------------------------------------- 1000 повторений 'webpavilion 1.1': 0.338 сек. 1000 повторений 'DeimosFobos 1.1 (error)': 0.387 сек. 1000 повторений 'DeimosFobos 1.0': 0.657 сек. 1000 повторений 'webpavilion 1.0': 0.853 сек. Не работает мне теперь тоже стоит подозревать вас в том, что вы хотите выставить меня дураком?
-------------------- Не ведитесь, cамопис это почти всегда плохо! Делаю сайты на Drupal 7.x (очень дорого) |
|
|
neebo |
9.8.2010, 22:55;
Ответить: neebo
Сообщение
#16
|
|
вот так всегда, человек просил простой скрипт, а фаллометрия между людьми сделала ему комбаин.
прикрутите ещё вебморду и базы для хранения результатов =))) |
|
|
webpavilion |
9.8.2010, 22:57;
Ответить: webpavilion
Сообщение
#17
|
|
так если регулярку поправить:
1000 повторений 'webpavilion 1.1': 0.336 сек. 1000 повторений 'DeimosFobos 1.1 (edit)': 0.382 сек. 1000 повторений 'DeimosFobos 1.0': 0.653 сек. 1000 повторений 'webpavilion 1.0': 0.876 сек. neebo, что то я вашего варианта не увидел, стесняетесь размера своей пиписьки? -------------------- Не ведитесь, cамопис это почти всегда плохо! Делаю сайты на Drupal 7.x (очень дорого) |
|
|
DeimosFobos |
9.8.2010, 22:59;
Ответить: DeimosFobos
Сообщение
#18
|
|
webpavilion
ваш вариант работает только с текстом в кодировке UTF-8, из-за этого был пустой массив. Сообщение отредактировал DeimosFobos - 9.8.2010, 23:02 |
|
|
webpavilion |
9.8.2010, 23:02;
Ответить: webpavilion
Сообщение
#19
|
|
ваш вариант работает только с текстом в кодировке UTF-8, из-за этого был пустой массив. содержимое файла с текстом в utf-8: ну да, это было в условиях игры. вдвоём как то не весело получается, я в прошлом году в офисе соревнования проводил: времени час, вариант на проверку один, приз ящик пива и закуска. сейчас не с кем, скучно... -------------------- Не ведитесь, cамопис это почти всегда плохо! Делаю сайты на Drupal 7.x (очень дорого) |
|
|
WebAction |
9.8.2010, 23:07;
Ответить: WebAction
Сообщение
#20
|
|
Поставил выполнять скрипт последний в теме. Результаты:
1000 повторений 'webpavilion 1.1': 0.051 сек. 1000 повторений 'DeimosFobos 1.1 (error)': 3.783 сек. 1000 повторений 'DeimosFobos 1.0': 4.804 сек. 1000 повторений 'webpavilion 1.0': 9.473 сек. Че за фигня??? -------------------- |
|
|
webpavilion |
9.8.2010, 23:13;
Ответить: webpavilion
Сообщение
#21
|
|
DeimosFobos, даже если поправить регулярку ваш вариант 1.1 работает не правильно - теряется последнее предложение в тексте.
WebAction, мне ваши результаты льстят. ошибок или предупреждений не дает в лог? Сообщение отредактировал webpavilion - 9.8.2010, 23:13 -------------------- Не ведитесь, cамопис это почти всегда плохо! Делаю сайты на Drupal 7.x (очень дорого) |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Раскройте свой потенциал заработка с помощью 2x2 Media Network — вашего пути к выгодным предложениям CPA! Присоединяйтесь к 2x2 Media Network, вашему надежному партнеру в мире |
11 | 2x2MediaLimited | 3296 | 18.4.2024, 4:22 автор: 2x2MediaLimited |
|
SEO-текст на главной странице сайта и в категориях | 5 | boltuk | 1431 | 26.3.2024, 21:43 автор: c4p1t4l15t |
|
Можно ли в старый SEO текст вместо старого домена поставить новый? | 3 | Tutich | 1220 | 22.3.2024, 14:47 автор: Tutich |
|
СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое | 5 | CULA | 3422 | 19.12.2023, 18:55 автор: CULA |
|
Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery Разработка сайтов и сервисов под-ключ |
0 | alexey | 1244 | 24.11.2023, 14:46 автор: alexey |
Текстовая версия | Сейчас: 25.4.2024, 5:34 |