Спросите о REGEX на переполнение стека

Я хочу эту строку:

{"48":"KAPAL GAGAK"}

становиться KAPAL GAGAK с помощью regex, Я достиг этого используя

/["0-9{:}]

но используя это в

{"51":"KAPAL GLORY / EX PAN MARINE 2"}

привело к KAPAL GLORY / EX PAN MARINE вместо KAPAL GLORY / EX PAN MARINE 2 поскольку regex отфильтрованы все числа от 0 до 9.

Как правильно это сделать?

0

Решение

Ваша строка выглядит JSON

Я бы предложил использовать http://php.net/manual/en/function.json-decode.php

$json = '{"51":"KAPAL GLORY / EX PAN MARINE 2"}';
$array = json_decode( $json, true );
var_dump( current( $array ) ); // string(29) "KAPAL GLORY / EX PAN MARINE 2"

Добавьте обработку ошибок по вашему выбору.

1

Другие решения

$tests = ['{"48":"KAPAL GAGAK"}', '{"51":"KAPAL GLORY / EX PAN MARINE 2"}', 'not pass throught'];

foreach($tests as $test){
// json_decode way
$obj = json_decode($test, true);
if($obj){
echo array_values($obj)[0]."\n";
}

// preg_match way
preg_match('/"([^"]*)"}/', $test, $matches);
if($matches){
echo $matches[1]."\n";
}
}
-1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector