За последние 24 часа нас посетили 19346 программистов и 1606 роботов. Сейчас ищут 903 программиста ...

Разбиение строки по заглавной букве

Тема в разделе "PHP для новичков", создана пользователем Mortgoroth, 2 сен 2014.

  1. Mortgoroth

    Mortgoroth Новичок

    С нами с:
    14 янв 2014
    Сообщения:
    23
    Симпатии:
    0
    Здравствуйте.
    Имеется строка вида "ФамилияИмя", нужно разбить на строки "Фамилия" и "Имя". Нагуглил такое:
    Код (PHP):
    1. preg_match_all('/[A-Z][^A-Z]*?/Us',"TestMyString",$res,PREG_SET_ORDER);
    оно работает, но только для латиницы. Замена [A-Z] на [А-Я] не помогла. Собственно, вопрос сводится к написанию правильной регулярки... Допинал до состояния:
    Код (PHP):
    1. $a = "НиШишаНеРаботает";
    2. $res = array();
    3. preg_match_all('/[А-Я]*?[^А-Я]*?/U',$a,$res);
    4. print_r($res);
    результат:
    Код (Text):
    1.  
    2. Array
    3. (
    4.     [0] => Array
    5.         (
    6.             [0] => НиШиш
    7.             [1] => аНеРабот
    8.             [2] => ает
    9.             [3] =>
    10.         )
    11.  
    12. )
    В общем, хелп...
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Код (PHP):
    1. $a="НиШишаНеРаботает";
    2. $res=array();
    3. preg_match_all('/[А-Я][^А-Я]*?/Usu',$a,$res);
    4. print_r($res); 
     
  3. Mortgoroth

    Mortgoroth Новичок

    С нами с:
    14 янв 2014
    Сообщения:
    23
    Симпатии:
    0
    ага, только добрался до описания PCRE_UTF8.... спасибо ))
     
  4. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Код (PHP):
    1. $a = "НиШишаНеРаботает";
    2. $b = preg_split('/(?<=[а-я])(?=[А-Я])/u',$a);
    3. print_r($b);