2017-09-13 41 views
0

我想這個字符串:詢問有關正則表達式在PHP

{"48":"KAPAL GAGAK"} 

使用regex成爲KAPAL GAGAK。我實現了這個使用

/["0-9{:}] 

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

導致KAPAL GLORY/EX PAN MARINE,而不是KAPAL GLORY/EX PAN MARINE 2因爲regex過濾所有號碼從0到9

什麼是應該做的正確的方法使用該這個?

回答

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" 

不要添加你所選擇的錯誤處理。

+0

它工作。現在我該如何擺脫字符串(數字)? – Nexcom

+1

'字符串(數字)'來自'var_dump'函數,如果你只是'echo',那麼只是字符串本身被打印出來 – Kazz

+0

如何做到這一點?它看起來像這樣使用var_dump https://imgur.com/a/C4z4H – Nexcom

-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"; 
    } 
} 
+0

你應該添加一些解釋 – Andreas