2013-07-23 39 views
-1

我試圖捕獲一個文本字段中的字符串和兩個其他字符串之間的字符串。捕獲兩個字符串之間的文本

  • 開始字符串:{ 「網站」: 「
  • 字符串結尾:」, 「推薦人」:」

完整的字符串會是這個樣子:

  • { 「網站」:「www.Domain.com」,「推薦人」:「邀請在google +上」}
  • 或者:
  • {「website」:「www.AnotherDomain .COM」, 「推薦人」: 「」}
  • 或許:
  • { 「網站」: 「www.about.me/SubDomain","re​​ferrer」: 「」}

我只是需要捕獲開始和結束字符串之間的所有內容,並嘗試使用混合結果的各種字符串方法。

開始和結束字符串將始終相同。

任何建議...?

+0

[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) – hek2mgl

+0

@ michi:簡單的爆炸可以做到這一點... – 2013-07-23 22:21:45

+0

解析我們自己的JSON會是一個很酷的挑戰,但既然你使用PHP,我會建議使用內置函數,除非你真的不想。 http://php.net/manual/en/function.json-decode.php – travis

回答

4

這就是所謂的json數組,它可以在json_decode函數中用php數組轉換。

$json = '{"website":"www.Domain.com","referrer":"invited on google+"}'; 
$info_array = json_decode($json, true); 
echo $info_array['website']; 

你不需要任何preg_match,字符串拆分或其他的東西。

演示:http://codepad.org/Mz0iNcGo

+0

我收到以下錯誤,當我嘗試: - 致命錯誤:在/ home /不能使用類型爲stdClass的對象作爲數組 – Harlequin

+0

@Harlequin與json_decode嘗試( $ json,true); –

+0

這就是我所做的,雖然我使用了上面的代碼,你所建議的是相同的,不是......? – Harlequin

0

像這樣的東西應該工作...

<?php 
$subject = "{"website":"www.Domain.com","referrer":"invited on google+"}"; 
$pattern = '/(?<=website":").*(?=","referrer)/'; 
preg_match($pattern, $subject, $matches); 
print_r($matches[0]); 
?> 

$比賽[0]實際上包含了您的字符串。

相關問題