X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

5 страниц V  < 1 2 3 4 5 >
Открыть тему
Тема закрыта
> PHP разбить текст по предложениям.
DeimosFobos
DeimosFobos
сообщение 9.8.2010, 21:56; Ответить: DeimosFobos
Сообщение #12


centurion
во держите самую быструю версию из всех, что тутsmile.gif
$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
webpavilion
сообщение 9.8.2010, 22:11; Ответить: webpavilion
Сообщение #13


DeimosFobos, быстрая - да. правильная - нет! wink.gif

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 smile.gif
    $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
DeimosFobos
сообщение 9.8.2010, 22:50; Ответить: DeimosFobos
Сообщение #14


(webpavilion @ 9.8.2010, 22:11) *
прогоните у себя мой вариант 1.1 smile.gif

Не работаетsmile.gif
Array
(
    [0] => Array
        (
        )

    [1] => Array
        (
        )

    [2] => Array
        (
        )

)


(DeimosFobos @ 9.8.2010, 22:46) *
рвет строки на отчествах

рвет т.к найдены заданные символы:
чтобы не рвало, можно
preg_match_all("/.*[.?!]{1,}+/U", $text, $array);


заменить на:
preg_match_all("/.*[.?!]{1,}+\s/U", $text, $array);


Сообщение отредактировал DeimosFobos - 9.8.2010, 22:47
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
webpavilion
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 сек.


(DeimosFobos @ 9.8.2010, 22:46) *
Не работаетsmile.gif
мне теперь тоже стоит подозревать вас в том, что вы хотите выставить меня дураком? wink.gif


--------------------
Не ведитесь, cамопис это почти всегда плохо!

Делаю сайты на Drupal 7.x
(очень дорого)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
neebo
neebo
сообщение 9.8.2010, 22:55; Ответить: neebo
Сообщение #16


вот так всегда, человек просил простой скрипт, а фаллометрия между людьми сделала ему комбаин.
прикрутите ещё вебморду и базы для хранения результатов =)))
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
webpavilion
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
DeimosFobos
сообщение 9.8.2010, 22:59; Ответить: DeimosFobos
Сообщение #18


webpavilion
ваш вариант работает только с текстом в кодировке UTF-8, из-за этого был пустой массив.

Сообщение отредактировал DeimosFobos - 9.8.2010, 23:02
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
webpavilion
webpavilion
сообщение 9.8.2010, 23:02; Ответить: webpavilion
Сообщение #19


(DeimosFobos @ 9.8.2010, 22:59) *
ваш вариант работает только с текстом в кодировке UTF-8, из-за этого был пустой массив.

(webpavilion @ 9.8.2010, 16:49) *
содержимое файла с текстом в utf-8:

ну да, это было в условиях игры.
вдвоём как то не весело получается, я в прошлом году в офисе соревнования проводил: времени час, вариант на проверку один, приз ящик пива и закуска. сейчас не с кем, скучно...


--------------------
Не ведитесь, cамопис это почти всегда плохо!

Делаю сайты на Drupal 7.x
(очень дорого)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
WebAction
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
webpavilion
сообщение 9.8.2010, 23:13; Ответить: webpavilion
Сообщение #21


DeimosFobos, даже если поправить регулярку ваш вариант 1.1 работает не правильно - теряется последнее предложение в тексте.

WebAction, мне ваши результаты льстят. smile.gif ошибок или предупреждений не дает в лог?

Сообщение отредактировал webpavilion - 9.8.2010, 23:13


--------------------
Не ведитесь, cамопис это почти всегда плохо!

Делаю сайты на Drupal 7.x
(очень дорого)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
5 страниц V  < 1 2 3 4 5 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Раскройте свой потенциал заработка с помощью 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


 



RSS Текстовая версия Сейчас: 25.4.2024, 5:34
Дизайн