2014-12-31 2 views
1

У меня есть переменная, которая может принимать эти два значения:PHP Regex не работает должным образом

'01838723001603 ООИ 155' НУ ''.

Я хочу получить второе значение после 14 символов. Для этого я пытаюсь следующее регулярное выражение, но он не работает:

/[0-9]{14} (.*?)/i 

preg_match_all('/[0-9]{14} (.*?)/i', $data, $result); 
var_dump($result); 

Результат -> [0 => '01838723026436', 1 => '01838723026436' ].

Она просто берет первое значение (01838723001603).
Я хочу, чтобы вернуть значения: «Telo 155»/«0608»

(это должно быть сделано с использованием регулярных выражений, поскольку эти данные перехватываются из текстового файла)

ответ

0

Вы можете попробовать искать зады как

/?<=\d{14}\s)[^']+/ 

Regex Demo

preg_match_all("/(?<=\\d{14}\\s)[^']+/", "01838723001603 TELO 155' ou '01838723009850 0608'.", $matches); 

даст выход в

Array ([0] => Array 
       ([0] => TELO 155 
        [1] => 0608) 
    ) 
+0

Спасибо! Отлично! –

+0

@JuninhoCHR Добро пожаловать :) – nu11p01n73R

-1

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

<?php 

    $data = "01838723009850 0608"; //01838723001603 TELO 155 
    preg_match_all('/\d{14}\s?(.*?)$/', $data, $result); 
    echo $result[1][0]; 

?> 

Выход:

0608 //TELO 155