PHP разделяет строку на целочисленный элемент и строку
У меня есть строка: Order_num = "0982asdlkj"
Как я могу разбить это на 2 переменные, с числовым элементом, а затем с другой переменной с элементом letter в php?
Элемент number может быть любой длиной от 1 до 4, а элемент letter заполняет остальные, чтобы сделать каждый order_num длиной 10 символов.
Я нашел функцию php explode
... но не знаю, как это сделать в моем случае, потому что число чисел от 1 до 4, и буквы являются случайными после этого, поэтому нет возможности разделить на конкретном письме. Пожалуйста, помогите как можно подробнее!
Ответы
Ответ 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