Вот рабочая версия, использующая preg_split
:
$input = ">=2.54";
$parts = preg_split("/(?<=[\d.])(?=[^\d.])|(?<=[^\d.])(?=[\d.])/", $input);
print_r($parts);
Это печатает:
Array
(
[0] => >=
[1] => 2.54
)
Вот объяснение используемого регулярного выражения, которое говорит, что нужно разделить, когда:
(?<=[\d.])(?=[^\d.]) a digit/dot precedes and a non digit/dot follows
| OR
(?<=[^\d.])(?=[\d.]) a non digit/dot precedes and a digit/dot follows
То есть на границе раздела мы разделяем число, возможно десятичное, и арифметический c символ.