[英]Regular expression to extract json response in php
我是php的新手,正在嘗試使用preg_match編寫正則表達式以提取從http get獲取的href值。 響應看起來:
{"_links":{"http://a.b.co/documents":{"href":"/docs"}}}
我只想提取href值並將其傳遞給下一個api ...即/ docs。 誰能告訴我該如何提取? 我一直在使用http://www.solmetra.com/scripts/regex/index.php來測試我的regex ..從上一天開始就沒有運氣:(
請任何幫助將不勝感激。
謝謝,博士
無需正則表達式。
使用json_decode()
,然后訪問href
屬性。
例如:
$data = json_decode('{"_links":{"http://a.b.co/documents":{"href":"/docs"}}}', true);
echo $data['_links']['http://a.b.co/documents']['href'];
注意:如果可能,我鼓勵您清理JSON。 特別是按鍵。
不要使用正則表達式,請使用json_decode()
。 JSON是無上下文語法的一個很好的例子,您甚至不應該嘗試使用正則表達式進行解析。
這是關於使用json_decode()
進行此類操作的PHP.NET 參考 。
就像HTML解析一樣,我建議不要使用REGEX而是使用json解析器然后讀取值。 在php中查看json_encode和json_decode函數。
就是說,如果您只需要href值,則可以使用正則表達式在給出的示例中執行此操作
preg_match('/"href":"([^"]+)"/',$string,$matches);
$matches[1];// this is the href
當您確切地知道所需的內容以及格式時,Regex才是正確的工具。通常無法准確預測來自其他方的json和HTML。 也有某些合法的HTML和json的示例,無法使用regex進行正確的解析,因此通常使用專用的解析器對其進行解析。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.