2017-02-24 24 views
1

我想preg_match_all()這個:如何使用特殊的表達在PHP中使用preg_match_all

if(isset($matches[1])){ 
     return $matches[1]; 
    }else{ 
     return false; 
    } 
} 
$lines = file('jason.txt'); 
$i=0; 
foreach ($lines as $line_num => $line) { 
    $str_arr = getInbetweenStrings('"Vehicle":', ',"Buyer":', $line); 
    echo '<pre>'; 
    print_r($str_arr); 
} 
+1

的字符串是'「車輛」:「1992年凱美瑞的強壯男子CE」'? – Mohammad

+0

展示你如何使用'getInbetweenStrings'功能 – RomanPerekhrest

+0

這是一個數組 「QuoteRequestId」 中:343816132, \t \t 「車輛」: 「1992年凱美瑞強壯男子CE」, \t \t 「買家」: 「卡羅來納州車身」, –

回答

0

如果字符串:

"Vehicle": "1992 Macho Camry CE" 

這裏是正則表達式:

preg_match_all("/: \"?([\w ]+)/", $str, $matches, PREG_PATTERN_ORDER); 

然後致電

print_r($matches); 

將返回:

Array 
(
    [0] => Array 
     (
      [0] => : "1992 Macho Camry CE 
     ) 

    [1] => Array 
     (
      [0] => 1992 Macho Camry CE 
     ) 

) 

要得到的字符串,使用:

$phrase = $matches[1]; 

編輯: 由於源數據是一個JSON字符串,可使用json_decode功能全部轉換數據列表:

$str = '[{"Vehicle": "1992 Macho Camry CE"}, {"Vehicle": "2017 OtherCar"}]'; 
$vehicles = json_decode($str, true); 
print_r($vehicles); 

Array 
(
    [0] => Array 
     (
      [Vehicle] => 1992 Macho Camry CE 
     ) 

    [1] => Array 
     (
      [Vehicle] => 2017 OtherCar 
     ) 
) 
+0

mmm最初是哪種類型的數據? JSON?串?或者已經是數組? – user2342558

+0

在這種情況下,我建議你使用'json_decode'來創建一個包含所有元素的數組。 – user2342558

+0

查看我的最後編輯:) – user2342558

0

根據您的評論你解析一個json文件。

在這種情況下,您不應該使用正則表達式或字符串函數。相反,你應該直接解析json文件。

爲了得到這一切在一個多維數組結構:

$array = json_decode(file_get_contents('path/to/file.json'), true); 
+0

我已經做到了,但它是以txt格式 –

+0

讓我發送你的文件。 –

+0

@BriguDash json是人類可讀的文本。只要文本文件的內容爲一個有效的json字符串,你可以解析它就好了。 – jeroen

相關問題