ФорумПрограммированиеPHP для идиотов → Нужно найти длинное слово в тексте

Нужно найти длинное слово в тексте

  • user_name

    Сообщения: 271 Репутация: N Группа: Кто попало

    Spritz 13 июля 2010 г. 2:34

    ?Нужно найти в тексте слово которое длиннее 15 символов. Слово может быть введено латЕй , или кирЕй. Как такое осуществить
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 13 июля 2010 г. 2:37, спустя 2 минуты 45 секунд

    какая кодировка текста?
    Сапожник без сапог
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 13 июля 2010 г. 2:50, спустя 13 минут 27 секунд

    user_name, вопрос надо ставить в конце предложения…
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 13 июля 2010 г. 10:11, спустя 7 часов 20 минут 41 секунду

    По трдиции не буду приносить тебе пользы. А вообще советую посмотрть доки пхп.
    Спустя 173 сек.
    Хотя ладно. Буду чуть полезным. Смотри условные конструкции, операторы сравнения и функцию, которая возрщает длину строки.
    Спустя 191 сек.
    Ах, да еще str_word_count() посмотри.
    Ну или тупо регулярки, но это сложно.
    Спустя 77 сек.
    епта. еще тебе по любому понадобится обрботка массивов. Так что на эу тему тоже почитай.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 13 июля 2010 г. 11:15, спустя 1 час 3 минуты 55 секунд

    но это сложно.

    сложно - бороться со своими страхами, а регулярки - просто твой страх, с которым ты еще не поборолся. не такие они и страшные, сколько мощные ;)
    Сапожник без сапог
  • user_name

    Сообщения: 271 Репутация: N Группа: Кто попало

    Spritz 13 июля 2010 г. 13:09, спустя 1 час 53 минуты 55 секунд


    какая кодировка текста?
    utf-8
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 13 июля 2010 г. 15:42, спустя 2 часа 33 минуты 6 секунд

    phpdude, я регулярок не боюсь)
    Спустя 18 сек.
    Я даже иногда ими злоупотребляю.
    Спустя 51 сек.
    Я с точки зрения человека, который задает такой вопрос)
  • Nyaah

    Сообщения: 574 Репутация: N Группа: Джедаи

    Spritz 13 июля 2010 г. 17:51, спустя 2 часа 8 минут 50 секунд

    $text = "?Нужно найти в тексте слово которое длиннее 15  символов.
    Слово может быть введено латЕй , или кирЕй.
    Как такое осуществить";

    $data = explode(' ', preg_replace('/[[:punct:]\s]+/u', ' ', $text));

    function cmpLength($a, $b)
    {
    $lena = mb_strlen($a, 'utf-8');
    $lenb = mb_strlen($b, 'utf-8');
    if ($lena == $lenb)
    {
    return 0;
    }
    return ($lena < $lenb) ? -1 : 1;
    }

    uasort($data, 'cmpLength');
    echo 'Самое длинное слово: "' . array_pop($data) . '"';
    Work, buy, consume, die
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 13 июля 2010 г. 17:56, спустя 5 минут 25 секунд

    Nyaah,
    $data = explode(' ', preg_replace('/[[:punct:]\s]+/u', ' ', $text)); 

    говно
    $data = str_word_count($text,1);

    Так тру. Имха.
  • Nyaah

    Сообщения: 574 Репутация: N Группа: Джедаи

    Spritz 13 июля 2010 г. 17:58, спустя 2 минуты 20 секунд

    анука, затести её с текстом в utf-8 =)
    Work, buy, consume, die
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 13 июля 2010 г. 18:21, спустя 22 минуты 40 секунд

    нях всегда прав ибо он всегда все тестит перед тем как написать)))
    Спустя 285 сек.
    Тогда так:
    <?php
    $text = "?Нужно найти в тексте слово которое длиннее 15 символов.
    Слово может быть введено латЕй , или кирилицейвылосыпыдыстской.
    Как такое осуществить";

    $data = explode(' ', preg_replace('/[[:punct:]\s]+/u', ' ', $text));
    foreach ($data as $d) $array[mb_strlen ($d, 'utf-8')] = $d;

    ksort($array);

    echo 'Самое длинное слово: "' . array_pop($array) . '"';

    UPD Чуть имена переменных поправил
  • Nyaah

    Сообщения: 574 Репутация: N Группа: Джедаи

    Spritz 13 июля 2010 г. 18:21, спустя 23 часа 59 минут 37 секунд

    Или так )
    $text = "?Нужно найти в тексте слово которое длиннее 15  символов.
    Слово может быть введено латЕй , или кирЕй.
    Как такое осуществить";

    $data = preg_replace('/[[:punct:]\s]+/u', ' ', $text);
    $pos = mb_strpos($data, ' ', 0, 'utf-8');
    $i = 0;
    $max = -1;
    while ($pos !== false)
    {
    $prev = $pos;
    $pos = mb_strpos($data, ' ', $pos + 1, 'utf-8');
    $len = $pos - $prev;
    if ($len > $max)
    {
    $max = $len;
    $num = $prev + 1;
    }
    }
    $len = mb_strlen($data) - $prev;
    if ($len > $max)
    {
    $max = $len;
    $num = $prev + 1;
    }
    $word = mb_substr($data, $num, $max, 'utf-8');
    echo 'Самое длинное слово: "' . $word . '"';
    Спустя 54 сек.
    в стиле работы с указателями в си =)
    Work, buy, consume, die
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 13 июля 2010 г. 18:25, спустя 4 минуты 9 секунд

    Я типа того на qbasic в школе классе в 9ом писал :D
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 13 июля 2010 г. 18:47, спустя 22 минуты 17 секунд

    function str_split_utf8($string, $split_length=1)
    {
    preg_match_all('`.`u', $string, $arr);
    return array_map('implode', array_chunk($arr[0], $split_length));
    }
    $string_array = split('[ ,.]',$string);
    foreach ($string_array as $v)
    {
       if (count(str_split_utf8($v)) >= 15)
       {
           echo 'Слово бля вот оно:'.$v.'<br />';
       }
    }
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 13 июля 2010 г. 18:52, спустя 5 минут 26 секунд

    ух наворотили)
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!