我使用JSONPath與PHP,我需要的xpath等效於包含過濾器,「contains(dept,'Management')」;PHP JSONPath,XPath包含過濾器
我有以下的JSON,我只想過濾員工到管理部門。如果部門節點只包含1個部門,那麼它沒有問題,但我需要在部門字符串中找到關鍵字?
任何幫助,將不勝感激。
{
"staff": {
"members": [
{
"firstname": "J",
"lastname": "H",
"department": "Management, Finance"
},
{
"firstname": "S",
"lastname": "M",
"department": "Finance"
}
]
}
}
$parser->setPath("$..members[?(@['department']=='Management')]");
$staff = $parser->getData();
var_dump($staff);
我試過 「$ ..會員[?(/管理/(@ '部門']))」,但不知道格式,我會更換什麼的。測試與?這是特定於javaScript嗎? – rossjha 2011-04-22 12:55:41
@rossjha耶,它是JavaScript特定的。我不知道你使用的是什麼PHP的xpath.php解析器,但看看他們提供了什麼表達式,並且如果有什麼'like'或者像上面的例子那樣你可以使用正則表達式(test是一個函數) – 2011-04-22 13:40:50
Thanks Eliijan,in在這裏找到的例子: - http://jsonpath.googlecode.com/svn/trunk/tests/jsonpath-test-php.php有strpos正在使用的例子,我可以看到在jsonpath.php文件中有一個eval函數,但仍然堅持語法。試過以下內容:「$ .. members。[?(@ && @ [\'department \'] && strpos(@ [\'department \',\'Management \')!== false)]」但不是喜悅。按照建議使用Michal Migurski的JSON解析器,所以我也要看看這個。 – rossjha 2011-04-22 13:43:13