使用正则表达式拆分xpath

时间:2015-11-01 11:34:54

标签: php regex xpath

我使用php,我需要使用正则表达式拆分字符串(xpath)。 我只需要一个正则表达式分成以下"输入"。我希望有人可以帮助我。

输入: /路径/到/节点/测试

输出:

$result = array(
    "path",
    "to",
    "node",
    "test",
);

输入: /路径/到[子="串" AND sub2 =" string2"] / node / test

输出:

$result = array(
    'path',
    'to[sub="string" AND sub2="string2"]',
    'node',
    'test',
);

输入: /路径/到[子/路径/要="串"] /节点/测试

输出:

$result = array(
    'path',
    'to[sub/path/to="string"]',
    'node',
    'test',
);

先谢谢!

祝你好运 的Sascha

1 个答案:

答案 0 :(得分:-1)

只需使用explode

即可
$str = explode('/',yourString)

或者,如果您想要忽略/内部[],则可以尝试使用以下正则表达式:

preg_match_all("/\[(?:[^\[\]]|(?R))+\]|[^\[\]\/]+/", $input, $matches);

示例:

$input = '/path/to[sub/path/to="string"]/node/test';
preg_match_all("/\[(?:[^\[\]]|(?R))+\]|[^\[\]\/]+/", $input, $matches);
var_dump($input);
var_dump($matches); //this will give you expected output

说明:

我们在这里捕捉了两种类型:

  1. /\[(?:[^\[\]]|(?R))+\]以递归方式匹配方括号之间的任何内容
  2. [^\[\]\/]+匹配任何不包含[ ]
  3. 的字符序列