<?php
$text = 'длина до 60 (текст)
длина <- 45 (текст)
длина <-100 (текст)
длина <-100
<- 50
<-30
длина 5 до 45 (текст)
длина 30-50 текст
длина 30 - 45
10 - 28
25-29
длина 5-> (текст)
длина 5-> текст
5-> текст
10 ->
12->';
$lines = array_map('trim', explode("\n", $text));
$result = [];
foreach ($lines as $str) {
$normalized = str_replace('до', '-', $str);
$normalized = preg_replace('![^0-9\-]+!', '', $normalized);
preg_match('!(\d*)-*(\d*)!', $normalized, $out);
if(strlen($normalized) > 0) {
$result[] = [
'str' => $str,
'value_from' => strlen($out[1]) > 0 ? $out[1] : null,
'value_to' => strlen($out[2]) > 0 ? $out[2] : null,
];
}
}
print_r($result);