qnixit
@qnixit
Middle PHP Developer (Symfony)

Какой составить regex что бы найти длину от и/или длину до и наоборот?

Нужно выудить из след набора возможных вхождений value_from и value_to:

длина до 60 (текст)
длина <- 45 (текст)
длина <-100 (текст)
длина <-100
<- 50
<-30

длина 5 до 45 (текст)
длина 30-50 текст
длина 30 - 45
10 - 28
25-29

длина 5-> (текст)
длина 5-> текст
5-> текст
10 ->
12->

если только текст то null и null


Спасибо!
  • Вопрос задан
  • 40 просмотров
Решения вопроса 2
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
<?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);
Ответ написан
ev_g
@ev_g
Web dev.
preg_match_all('/([0-9]+)/', $input, $outputArray);

На выходе будет массив в найденными числами.

628fc340e7af5390743348.png
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы