За последние 24 часа нас посетили 17859 программистов и 1614 роботов. Сейчас ищут 1211 программистов ...

Разделение строки буквы отдельно, цифры отдельно

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

  1. Ovey

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

    С нами с:
    19 сен 2012
    Сообщения:
    14
    Симпатии:
    0
    Есть некая строка ovey99123
    Необходимо сделать разделение:

    ovey
    99123
     
  2. uorypm

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

    С нами с:
    3 мар 2012
    Сообщения:
    98
    Симпатии:
    0
    Код (PHP):
    1. preg_match("/([a-zA-Z]+)([0-9]+)/", "ovey99123", $matches);
    2. print_r($matches); 
    Только не надо для таких задач использовать регулярные выражения.
     
  3. Ovey

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

    С нами с:
    19 сен 2012
    Сообщения:
    14
    Симпатии:
    0
    uorypm, а что можешь посоветовать кроме регулярный выражений?

    Добавлено спустя 36 секунд:
    спасибо за код
     
  4. kosinus2012

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

    С нами с:
    16 июл 2012
    Сообщения:
    137
    Симпатии:
    0
    Код (Text):
    1. for($i=0; $i<strlen($str); $i++)
    2. {
    3.     is_numeric($str[$i]) ? $number .= $str[$i] : $string .= $str[$i];
    4. }
    5.  
    6. print_r($number);
    7. echo "<br />";
    8. print_r($string);
    Если правильно все взвесить то можно еще и упростить,)
    Но от регулярного выражения лучше уйти.

    Добавлено спустя 22 минуты 36 секунд:
    Притом этому коду все равно где находятся числа, хоть так ov99ey123, хоть этак 9ovey9123, результат один две переменные,с числами и без.
     
  5. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Какой смысл уходить от регулярок, когда они лежат в основе 95% строковых функций php?
     
  6. Ovey

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

    С нами с:
    19 сен 2012
    Сообщения:
    14
    Симпатии:
    0
    У меня будет структура ovey99123 и ovey-99123.

    Вот эта регулярка хороша для ovey99123
    Код (Text):
    1. preg_match("/([a-zA-Z]+)([0-9]+)/", "ovey99123", $matches);
    2. print_r($matches);
    Вот эта для ovey-99123
    Код (Text):
    1. preg_match("/([a-zA-Z]+)([-]+[0-9]+)/", "ovey99123", $matches);
    2. print_r($matches);
    А как сделать одну общую регулярку? Чтобы деление при ovey99123 происходило на ovey и 99123, а при ovey-99123 на ovey и -99123
     
  7. kosinus2012

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

    С нами с:
    16 июл 2012
    Сообщения:
    137
    Симпатии:
    0
    Вы правы,) Уходить это не значит отказываться,)
     
  8. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Код (Text):
    1. /([a-zA-Z]+)([\-0-9]+)/
     
  9. Ovey

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

    С нами с:
    19 сен 2012
    Сообщения:
    14
    Симпатии:
    0
    спасибо ;)
     
  10. Gold Dragon

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

    С нами с:
    30 сен 2012
    Сообщения:
    306
    Симпатии:
    2
    Адрес:
    Тамбов
    наверное лучше использовать это
    Код (Text):
    1. #([a-zA-Z]*)([0-9]*)#
    т.е. не "+" а "*"

    иначе если строка только из букв или только из цифр не прокатит