Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

Вы можете использовать preg_split, используя lookahead и lookbehind:

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

печатает

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

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

Update:

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

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

Ответ 2

Используйте 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

Ответ 3

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

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

Посмотрите

Ответ 4

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

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

Ответ 5

Проверьте это

<?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