CakePHP Set :: extract在条件中使用特殊字符

时间:2012-11-30 17:18:52

标签: cakephp escaping set extract

我有一个像这样的数组

Array
(
[0] => Array
    (
        [Unit] => Array
            (
                [Unit] => ST109347005
                [SplitCnt] => 0
                [UWin] => 
                [Unit>Part] => MOLDTOOLREPAIR
                [Unit>UK1] => MOLDSHELF1
                [Unit>UK2] => 28149813MH001
                [Unit>UK3] => MOLDTOOL
            )

    )
...

并想提取存储在'Unit'中的序列号数组(例如:ST109347005)

$newarray = Set::extract($data,'/Unit[Unit>UK1=MOLDSHELF1][Unit>UK3=MOLDTOOL]/Unit');

哪个不起作用,因为>是一个保留字符。我不确定允许它工作的语法是什么。我想它会是这样的(这不起作用)

$newarray = Set::extract($data,'/Unit[Unit\>UK1=MOLDSHELF1][Unit\>UK3=MOLDTOOL]/Unit');

由于

1 个答案:

答案 0 :(得分:1)

在最后它归结为Set::matches,它将接收Unit>UK1=MOLDSHELF1作为条件,并使用正则表达式对其进行评估。不支持转义字符,因此match会将>视为运算符,因此会失败。

您需要重命名密钥,至少暂时用于提取,但是当您已经遍历所有条目时,您可以轻松地手动比较密钥,并通过Set::extract跳过重命名和提取。理想情况下,您应该永久重命名密钥。