PHP разделяет строку на целочисленный элемент и строку

У меня есть строка: Order_num = "0982asdlkj"

Как я могу разбить это на 2 переменные, с числовым элементом, а затем с другой переменной с элементом letter в php?

Элемент number может быть любой длиной от 1 до 4, а элемент letter заполняет остальную часть, чтобы сделать каждый order_num 10 символов в общем количестве.

Я нашел функцию php explode … но не знаю, как это сделать в моем случае, потому что число чисел составляет от 1 до 4, а буквы являются случайными после этого, поэтому невозможно разбить на конкретную букву. Пожалуйста, помогите, насколько это возможно!

Вы можете использовать preg_split с помощью lookahead и lookbehind :

 print_r(preg_split('#(?<=\d)(?=[az])#i', "0982asdlkj")); 

печать

 Array ( [0] => 0982 [1] => asdlkj ) 

Это работает только в том случае, если буква содержит только буквы и цифры.

Обновить:

Просто уточнить, что здесь происходит:

Регулярные выражения смотрят на каждую позицию, и если перед этой позицией цифра ( (?<=\d) ) и буква после нее ( (?=[az]) ), то она совпадает, и строка делится на эту позицию , Все это нечувствительно к регистру ( i ).

Используйте preg_match () с регулярным выражением (\d+)([a-zA-Z]+) . Если вы хотите ограничить число цифр 1-4 и буквы до 6-9, измените его на (\d+{1,4})([a-zA-Z]{6,9}) .

 preg_match("/(\\d+)([a-zA-Z]+)/", "0982asdlkj", $matches); print("Integer component: " . $matches[1] . "\n"); print("Letter component: " . $matches[2] . "\n"); 

Выходы:

 Integer component: 0982 Letter component: asdlkj 

http://ideone.com/SKtKs

Вы также можете сделать это, используя preg_split , разделив ваш вход в точке, которая находится между цифрами и буквами:

 list($num,$alpha) = preg_split('/(?<=\d)(?=[az]+)/i',$Order_num); 

Видеть это

Для этого вы можете использовать регулярное выражение.

 preg_match('/(\d{1,4})([az]+)/i', $str, $matches); array_shift($matches); list($num, $alpha) = $matches; 

Проверь это

 <?php $Order_num = "0982asdlkj"; $split=split("[0-9]",$Order_num); $alpha=$split[(sizeof($split))-1]; $number=explode($alpha, $Order_num); echo "Alpha -".$alpha."<br>"; echo "Number-".$number[0]; ?> 

с уважением

wazzy