За последние 24 часа нас посетили 19287 программистов и 1647 роботов. Сейчас ищут 1089 программистов ...

Разбив строки

Тема в разделе "Регулярные выражения", создана пользователем eaglenix, 25 авг 2009.

  1. eaglenix

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

    С нами с:
    12 июл 2006
    Сообщения:
    47
    Симпатии:
    0
    Здравствуйте.
    Есть такой код:
    PHP:
    1.  
    2. $input = 'Word1#, word2-jjj word3- | word4 !word5   jjjjjj-jjjjj  - 1 ,   ку-ку    word6|word7,word8    ,word9';
    3. $result = preg_split('~[^а-яА-Яa-zA-Z0-9]+~', $input);
    4.  
    5. foreach ($result as $word)
    6. {
    7. echo $word.'<br>';
    8. }
    9.  
    Проблема в том что например слово "ку-ку" считается разным словом. А если просто добавить "-", то вываливаются все "-" не окруженные текстом.
     
  2. TheShock

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

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    и? что надо то?
     
  3. eaglenix

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

    С нами с:
    12 июл 2006
    Сообщения:
    47
    Симпатии:
    0
    Чтобы ку-ку не разбивалось на части
     
  4. TheShock

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

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    preg_split('~[^а-яА-Яa-zA-Z0-9-]+~', $input);
     
  5. eaglenix

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

    С нами с:
    12 июл 2006
    Сообщения:
    47
    Симпатии:
    0
    В таком случае все дефисы проходят, а нужно чтобы с права и слева дефис не должен быть пуст
     
  6. TheShock

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

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    PHP:
    1. <?php
    2.     $in = "привет всем-всем присутствующим здесь! -хо- -хо хо- -тра-ля-ля-ля-";
    3.     $L  = "а-яА-Яa-zA-Z0-9";
    4.     $re = "/[$L]([-$L]*[$L])?/u";
    5.     preg_match_all($re, $in, $fl);
    6.     print_r($fl[0]);
    7. ?>
    Код (Text):
    1. Array (
    2.     [0] => привет
    3.     [1] => всем-всем
    4.     [2] => присутствующим
    5.     [3] => здесь
    6.     [4] => хо
    7.     [5] => хо
    8.     [6] => хо
    9.     [7] => тра-ля-ля-ля
    10. )
     
  7. eaglenix

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

    С нами с:
    12 июл 2006
    Сообщения:
    47
    Симпатии:
    0
    Во крута, спасибо