2015-10-27 202 views
1

我有一個字符串,它看起來像這樣:PHP:在字符串中的特定單詞之後提取特定單詞?

{"ip":"XX.XX.XX","country_code":"IE","country_name":"Ireland","region_code":"L","region_name":"Leinster","city":"Dublin","zip_code":"","time_zone":"Europe/Dublin","latitude":53.333,"longitude":-6.249,"metro_code":0} 

我只需要爲country_name從該字符串值。

所以我嘗試這樣的:

$country = '{"ip":"XX.XX.XX","country_code":"IE","country_name":"Ireland","region_code":"L","region_name":"Leinster","city":"Dublin","zip_code":"","time_zone":"Europe/Dublin","latitude":53.333,"longitude":-6.249,"metro_code":0}'; 

if (preg_match('#^country_name: ([^\s]+)#m', $country, $match)) { 
    $result = $match[1]; 
} 

echo $result; 

但並沒有什麼在$result

被迴盪可能有人請告知這個問題?

+1

這看起來像一個JSON字符串。你應該找到一個庫,可以將它轉換爲一個對象並從該對象中提取值。這比字符串解析更容易 – Domysee

回答

5
$country = json_decode('{"ip":"XX.XX.XX","country_code":"IE","country_name":"Ireland","region_code":"L","region_name":"Leinster","city":"Dublin","zip_code":"","time_zone":"Europe/Dublin","latitude":53.333,"longitude":-6.249,"metro_code":0}'); 

echo $country->country_name; 

你在那裏有一個JSON字符串。

JSON代表JavaScript Object Notation。 PHP可以通過json_decode($ string,FALSE)將其解碼爲數組或對象;

默認情況下,第二個參數是FALSE,這意味着它會將字符串轉換爲一個對象,然後您可以按照上面的指示訪問該對象。

0

試試這個:

<?php 
$country=json_decode('{"ip":"XX.XX.XX","country_code":"IE","country_name":"Ireland","region_code":"L","region_name":"Leinster","city":"Dublin","zip_code":"","time_zone":"Europe/Dublin","latitude":53.333,"longitude":-6.249,"metro_code":0}') 
$result=$country->country_name; 
echo $result; 
?> 
+1

Works,但爲什麼'{}'?這裏不需要。 – AbraCadaver

+0

變量名稱的選擇也很差... – Alfwed

+0

@AbraCadaver我嘗試按照手冊中的說明執行操作。檢查出來:http://php.net/manual/en/function.json-decode.php – Manikiran

0

這看起來像一個JSON字符串。閱讀更多關於JSON

使用方法如下:

$foo = '{"ip":"XX.XX.XX","country_code":"IE","country_name":"Ireland","region_code":"L","region_name":"Leinster","city":"Dublin","zip_code":"","time_zone":"Europe/Dublin","latitude":53.333,"longitude":-6.249,"metro_code":0}'; 
$bar = json_decode($foo, true); 
echo $bar['country_name']; 

這可以從該字符串的任何key使用(例如ipcity

更多json_decode

+0

'注意:未定義的變量:a' – AbraCadaver

+0

@AbraCadaver沒關係,它是固定的^^ – FirstOne

1

如果由於某種原因您不想使用JSON,您可以嘗試以下操作。請注意,使用JSON是執行此任務的推薦方式。

$country = '{"ip":"XX.XX.XX","country_code":"IE","country_name":"Ireland","region_code":"L","region_name":"Leinster","city":"Dublin","zip_code":"","time_zone":"Europe/Dublin","latitude":53.333,"longitude":-6.249,"metro_code":0}'; 

$temp = explode('"country_name":', $country); //Explode initial string 
$temp_country = explode(',', $temp[1]); //Get only country name 
$country_name = str_replace('"', ' ', $temp_country[0]); //Remove double quotes 
echo $country_name; 

結果:

Ireland 
+0

請解釋downvote –

+0

在我誠實的意見,當你有一個JSON字符串,你甚至不應該考慮把它當作一個普通的字符串,並使用爆炸等,因此downvote –

+0

這就是爲什麼我不只是寫下來的代碼,但我第一次有這樣的短語:「如果由於某種原因,你不想使用JSON」! –

相關問題