Разбить строку на несколько значений на основе строковых или буквенных букв?

Я надеюсь, что смогу объяснить, чего я пытаюсь достичь:
В PHP я получаю контент с удаленного сайта и хочу обработать эти данные.
Теперь у меня есть + — 300 строк, как это:

$string=abcdefg123abcdefg

Я хотел бы разбить эту строку на 3 части:

  • первая часть: первая буквенная строка (abcdefg)
  • вторая часть: числовая строка (123)
  • третья часть: вторая буквенная строка (abcdefg)

Я попробовал некоторые с функцией разнесения, но я мог только разбить строку на две части.

-1

Решение

Вы могли бы использовать preg_split() на серии цифр, а также захватить разделитель:

$parts = preg_split('/(\d+)/', 'abc123def', 2, PREG_SPLIT_DELIM_CAPTURE);
// $parts := ['abc', '123', 'def']
1

Другие решения

preg_match("/([a-zA-Z]*)([0-9]*)([a-zA-Z]*)/", $string, $output_array);
print_r($output_array)
0

Это должно работать для вас:

(Сначала я получаю номера строки, чтобы взорвать строку! После этого я добавляю числа в массив)

<?php

$string = "abcdefg123abcdefg";

preg_match('!\d+!', $string, $match);
$split = explode(implode("",$match), $string);
$split[2] = $split[1];
$split[1] = implode("",$match);

print_r($split);

?>

Выход:

Array
(
[0] => abcdefg
[1] => 123
[2] => abcdefg
)
0

Решение:

Это будет работать:

$string = 'abcdefg123abcde';
preg_match_all('/([0-9]+|[a-zA-Z]+)/',$string,$matches);

print_r( $matches[0] );

Выход:

Array ( [0] => abcdefg [1] => 123 [2] => abcde )
0