Как написать регулярное выражение на php для изменения содержимого?

#php #regex

#php #регулярное выражение

Вопрос:

У меня есть файл .h, который содержит сотни строк кода. Я хочу вернуть строки из переменной.

 string PackageToRun[][] = { {"M16.1","M16.1EP1","M16.2","M17"},
            {"Tv16.2","Tv17","Ta17","Ta16.2 MOpenTAS","Tv17.1","Ta17.1","T16.2","T16.2c"} };
  

Возможно ли написать регулярное выражение на PHP, которое возвращает «M16.1», «M16.1EP1» … ?!
Если это возможно, будет ли это работать, если я добавлю больше строк в PackageToRun ?!

Комментарии:

1. Это возможно, и да, если вы напишете это правильно, это будет работать, даже если вы добавите больше строк в PackageToRun!

Ответ №1:

Эй, это похоже на JSON!

 <?php 

$file = '
string PackageToRun[][] = { {"M16.1","M16.1EP1","M16.2","M17"},
            {"Tv16.2","Tv17","Ta17","Ta16.2 MOpenTAS","Tv17.1","Ta17.1","T16.2","T16.2c"} };
';

if( preg_match('#string PackageToRun[][] = ({.*});#is', $file, $matches)) {
  $data = json_decode(str_replace(array('{','}'), array('[',']'), $matches[1]));
  print_r($data);
}
  

Вывод:

 Array ( 
    [0] => Array ( 
        [0] => M16.1 [1] => M16.1EP1 [2] => M16.2 [3] => M17 
    ) 
    [1] => Array (
        [0] => Tv16.2 [1] => Tv17 [2] => Ta17 [3] => Ta16.2 MOpenTAS 
        [4] => Tv17.1 [5] => Ta17.1 [6] => T16.2 [7] => T16.2c 
    ) 
)