Получить значение после определенных цифр

JonyFront

Добрый день, есть переменная с данными:

PHP:
  1. $option = «m:9;10012:540103551;10019:1983992534»;

или

PHP:
  1. $option = «10012:540103551;10019:1983992534»;

или

PHP:
  1. $option = «10012:540103551»;

Мне нужно получить цифры после 10012:, но до символа «;» если он есть, то бишь какие бы данные не были по порядку, если есть в ней 10012:, то мне нужно получить только 540103551, как можно это реализовать?
Пробовал делать подобную проверку:

PHP:
  1.     function get_string_between($string, $start, $end){
  2.         $string = ‘ ‘ . $string;
  3.         $ini = strpos($string, $start);
  4.         if ($ini == 0) return »;
  5.         $ini += strlen($start);
  6.         $len = strpos($string, $end, $ini) $ini;
  7.         return substr($string, $ini, $len);
  8.     }
PHP:
  1. if(stripos($option , ‘;’) !== false){
  2. $param = get_string_between($option, ‘10012:’, ‘;’);
  3. } else {
  4.              $param = current(array_diff(explode(‘10012:’, $option), array(»)));
  5.            }

, но это работает только если строка такого вида $option = «10012:540103551»; или «10012:540103551;10019:1983992534» подскажите пожалуйста

 

Drunkenmunky

Разбейте строку в массив по разделителю «;»
Полученный массив в цикле разбивайте по «:»
Если элемент 0 равен 10012, то вводите значение элемента 1 в переменную и выходите из цикла.
Кстати, эту переменную заранее нужно установить в дефолтное значение

 

MouseZver

PHP:
  1. <?php
  2.  
  3. $option = «m:9;10012:540103551;10019:1983992534»;
  4.  
  5. $closure = function ( string $string ): Iterator
  6. {
  7.     foreach ( explode ( ‘;’, trim ( $string, ‘:;’ ) ) AS $row )
  8.     {
  9.         [ $key, $value ] = explode ( ‘:’, $row );
  10.      
  11.         yield $key => $value;
  12.     }
  13. };
  14.  
  15. $array = iterator_to_array ( $closure( $option ) );
  16.  
  17. print_r ( $array );
PHP:
  1. (
  2.     [m] => 9
  3.     [10012] => 540103551
  4.     [10019] => 1983992534
  5. )
 

JonyFront

круто, спасибо большое!

 

roboformation

Дюран

PHP:
  1. $option = «m:9;10012:540103551;10019:1983992534»;
  2.  
  3. $matches = [];
  4.  
  5. $res = preg_match(‘/10012:(d+)/’, $option, $matches);
  6.  
  7. if ($res) {
  8.     print $matches[1];
  9. }
 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *