За последние 24 часа нас посетили 30497 программистов и 1808 роботов. Сейчас ищет 821 программист ...

как поделить предложения на слова?

Тема в разделе "PHP для новичков", создана пользователем Dfg84, 4 июн 2009.

  1. Dfg84

    Dfg84 Активный пользователь

    С нами с:
    10 апр 2009
    Сообщения:
    50
    Симпатии:
    0
    как поделить предложение из набора любых слов, например "раз два три четы пять" на словосочетания ->

    раз два
    два три
    три четыре
    четыре пять

    /(?=( [\s|"]* [^\s]+ [\s]+ [^\s]+ [\s|$]+))/xi и
    /( [\s|"]* [^\s]+ [\s]+ [^\s]+ [\s|$]+)/xi не получаеться
     
  2. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    PHP:
    1. <?php
    2. $string = "раз два три четы пять";
    3. // $words = explode(' ', $string);
    4. $words = preg_split('/[\s,]+/', $string);
    5. $phrases = array();
    6. for($i=1, $c=count($words); $i<$c; $i++) {
    7.     $phrases[] = $words[$i-1] . " " . $words;
    8. }
    9.  
    Иногда лучше взять несколько строковых функций, чем одно мощное регулярное выражение
     
  3. Dfg84

    Dfg84 Активный пользователь

    С нами с:
    10 апр 2009
    Сообщения:
    50
    Симпатии:
    0
    спасибо огромнейшее!
     
  4. Dfg84

    Dfg84 Активный пользователь

    С нами с:
    10 апр 2009
    Сообщения:
    50
    Симпатии:
    0
    Правда неработает нихера, но идея понятна
     
  5. VItalijs

    VItalijs Активный пользователь

    С нами с:
    17 дек 2008
    Сообщения:
    244
    Симпатии:
    0
    Адрес:
    Рига, Латвия
    PHP:
    1. <?
    2.     $string = "one two three four five";
    3.     $words  =  explode(" ", $string); //preg_split("/[\s,_|]+/", $string);
    4.     for ($i=0; $i<count($words); $i=$i+2){
    5.         if (isset($words[$i]) && isset($words[$i+1])){
    6.             $phrases[] = $words[$i]." ".$words[$i+1];
    7.         } else if (isset($words[$i])){
    8.             $phrases[] = $words[$i];       
    9.         }
    10.     }
    11.  
    12.     print_r($phrases);
    13. ?>
     
  6. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    PHP:
    1. <?
    2.      $string = "раз два три четы пять";
    3.      // $words = explode(' ', $string);
    4.      $words = preg_split('/[\s,]+/', $string);
    5.      $phrases = array();
    6.      for($i=1, $c=count($words); $i<$c; $i++) {
    7.         $phrases[] = $words[$i-1] . " " . $words[$i];
    8.      }
    9.      print_r($phrases);
    Код (Text):
    1. Array
    2. (
    3.     [0] => раз два
    4.     [1] => два три
    5.     [2] => три четы
    6.     [3] => четы пять
    7. )
    VItalijs, задание немного не то :)
     
  7. VItalijs

    VItalijs Активный пользователь

    С нами с:
    17 дек 2008
    Сообщения:
    244
    Симпатии:
    0
    Адрес:
    Рига, Латвия
    ок.
    PHP:
    1. <?php
    2.  $string = "one two three four five";
    3.       $words  =  explode(" ", $string); //preg_split("/[\s,_|]+/", $string);
    4.       for ($i=0; $i<count($words); $i++){
    5.           if (isset($words[$i]) && isset($words[$i+1])){
    6.               $phrases[] = $words[$i]." ".$words[$i+1];
    7.           } else if (isset($words[$i])){
    8.              // $phrases[] = $words[$i];      
    9.           }
    10.       }
    11.  
    12.       print_r($phrases);
    13.  
    14.  
    15.  
    16. ?>
    найдите 2 отличия.