скрипт для изменения текста

Тема в разделе "Как сделать...", создана пользователем xvins, 20 ноя 2009.

Статус темы:
Закрыта.
  1. xvins

    xvins Постоялец

    Регистр.:
    16 июл 2009
    Сообщения:
    88
    Симпатии:
    4
    кто-нибудь может написать скрипт, который будет брать текст и делать с ним следующее?
    1)он будет обрывать предложение и ставить точку.(длина предложения рандомно меняется постоянно).
    2) а дальше он точку убирает (ту, которая была).
    надеюсь, понятно объяснил?
    вообще, такое можно сделать?
     
  2. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    624
    Симпатии:
    1.379
    Написать можно, только исходных данных для реализации мало. При каком условии обрывать предложение?
     
  3. satih

    satih

    Регистр.:
    19 сен 2008
    Сообщения:
    429
    Симпатии:
    710
    Неа, обьяснил не понятно, точнее не однозначно. Как насчет такого:
    1. стираем все точки в тексте
    1.1. если буква после точки заглавная, меняем на маленькую, иначе точка не означала конец предложения, оставляем ее
    2. расставляем точки каждое рандомальное количество символов (если попадаем посреди слова, то в его конце)
    2.1. букву следующего слова превращаем в заглавную

    Угадал?
     
    xvins нравится это.
  4. termit.

    termit. Постоялец

    Регистр.:
    12 мар 2008
    Сообщения:
    67
    Симпатии:
    31
    Посмотри прогу TextPipe там фильтров тьма-тьмущая, думаю в ней можно такое реализовать.
     
    xvins нравится это.
  5. xvins

    xvins Постоялец

    Регистр.:
    16 июл 2009
    Сообщения:
    88
    Симпатии:
    4
    абсолютно точно)
    так и хочу сделать.
    чем это лучше сделать?
     
  6. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    624
    Симпатии:
    1.379
    Держи. Код не совсем корректный, писал на скорую руку, но то, что тебе необходимо делает.
    PHP:
    <?
    $str "Здесь какой-то текст. Здесь какой-то текст. Здесь какой-то текст. И пример сокр. иначе - сокращения.";
    $sl substr_count($str".");
    $s 0;
    for(
    $i=0$i $sl$i++)
    {
    $s strpos($str". "$s);
    $sm substr($str$s+21);
    $sm2 ord($sm);
    if(
    $sm2 > (ord("А")-1) && $sm2 < (ord("Я")+1))
        {
        
    $ts substr($str$s3);
        
    $str str_replace(". ".$sm" ".strtolower($sm), $str);
        }
    $s++;
    }
    echo 
    $str."<br>";
    $rnd rand(strlen($str), 1);
    for(
    $i=0$i $rnd$i++)
    {
    $r rand(strlen($str), 1);

    if(
    substr($str$r-11) != "." && substr($str$r1) != "." && substr($str$r+11) != ".")
        {
        if(
    substr($str0$r+1) != " ")
        
    $str substr($str0$r).". ".ucfirst(substr($str$r));
    else
        
    $str substr($str0$r).".".ucfirst(substr($str$r));
        }
    }
    echo 
    $str;
    ?>
     
    xvins нравится это.
  7. xvins

    xvins Постоялец

    Регистр.:
    16 июл 2009
    Сообщения:
    88
    Симпатии:
    4
    а можно поправить скрипт, чтобы он не расчленял:D слова?
    и ещё в нём баг есть - он не всегда после точки меняет строчную букву на заглавную.
    можно все эти косяки устранить?
     
  8. xvins

    xvins Постоялец

    Регистр.:
    16 июл 2009
    Сообщения:
    88
    Симпатии:
    4
    если кто-нибудь может поправить скрипт, напишите.
    заплачу деньги.
     
  9. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    624
    Симпатии:
    1.379
    Пишу. Поправил.
    PHP:
      <?
    $str = "Здесь какой-то текст. Здесь какой-то текст. Здесь какой-то текст. И пример сокр. иначе - сокращения.";
    $sl = substr_count($str, ".");
    $s = 0;
    for($i=0; $i < $sl; $i++)
    {
    $s = strpos($str, ". ", $s);
    $sm = substr($str, $s+2, 1);
    $sm2 = ord($sm);
    if($sm2 > (ord("А")-1) && $sm2 < (ord("Я")+1))
        {
        $ts = substr($str, $s, 3);
        $str = str_replace(". ".$sm, " ".strtolower($sm), $str);
        }
    $s++;
    }
    echo $str."<br>";
    $rnd = rand(strlen($str), 1);
    for($i=0; $i < $rnd; $i++)
    {
    $r = rand(strlen($str), 1);

    if(strpos($str, ".", substr($str, $r-1, 3)))
        {
    if(substr($str, $r, 1) == " " && substr($str, $r-1, 1) != ".")
        $str = substr($str, 0, $r).". ".ucfirst(trim(substr($str, $r)));
        }
    }
    echo $str;
    ?>

     
    xvins нравится это.
Статус темы:
Закрыта.