询问有关PHP的REGEX

时间:2017-09-13 03:25:12

标签: php regex preg-replace pcre

我想要这个字符串:

{"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的所有数字。

这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

您的字符串看起来像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 :(得分:-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";
    }
}