PHP JSONPath,XPath包含筛选器
我在PHP中使用JSONPath,并且需要与contains过滤器“contains(dept,'Management')”等效的xpath 我有以下JSON,我只想将员工过滤到管理部门。如果department节点仅包含1个department,则没有问题,但我需要在department字符串中找到关键字 任何帮助都将不胜感激PHP JSONPath,XPath包含筛选器,php,json,jsonpath,Php,Json,Jsonpath,我在PHP中使用JSONPath,并且需要与contains过滤器“contains(dept,'Management')”等效的xpath 我有以下JSON,我只想将员工过滤到管理部门。如果department节点仅包含1个department,则没有问题,但我需要在department字符串中找到关键字 任何帮助都将不胜感激 { "staff": { "members": [ { "firstname": "J",
{
"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);
看看这个
我想你的情况会是这样的
"$..members[?(/Management/.test(@['department']))";
我设法弄明白了。有一些使用PHP strpos的例子,但这在最初使用jsonpath-0.8.1.PHP时并不适用 我给出了jsonpath-0.8.3.php,发现存储库和strpos表达式工作得非常好:-
$..members[?(@ && @['department'] && strpos(@['department'],'".$dept."')!==false)]
注意,函数evalx()还有第三个参数会导致错误,将该值设置为null可以正常工作,请参阅
我试过“$…成员[?(/Management/(@['department'])”,但不确定格式,我将替换什么。test是什么?这也是特定于javaScript的吗?@rossjha是的,它是特定于javaScript的。我不知道您使用的是什么xpath.php php php解析器,但请查看它们提供的表达式,以及是否有“类似”的内容,或者在上面的示例中可以使用正则表达式(test是一个函数)感谢Elijan,在这里找到的示例中:-有使用strpos的示例,我可以在jsonpath.php文件中看到有一个eval函数,但仍然使用语法。尝试了以下操作:“$…成员。[(@&&&@[\'department\']&&strpos(@[\'department\'],\'Management\')!==false)]”但是没有乐趣。按照建议使用Michal Migurski的JSON解析器,所以我也会看看这个。
function evalx($x, $v, $vname=null)