fork download
  1. <?php
  2. $xpath = '//node[@cat="top" and node[@rel="--" and @cat="smain" and node[@rel="su" and @pt="vnw" and @word="Dit" and @lemma="dit" and number(@begin) < ../node[@rel="hd" and @pt="ww" and @lemma="zijn"]/number(@begin)] and node[@rel="hd" and @pt="ww" and @lemma="zijn" and number(@begin) < ../node[@rel="predc" and @cat="np"]/node[@rel="det" and @pt="lid" and @word="een" and @cs="no" and @lemma="een"]/number(@begin)] and node[@rel="predc" and @cat="np" and node[@rel="det" and @pt="lid" and @word="een" and @cs="no" and @lemma="een" and number(@begin) < ../node[@rel="hd" and @pt="n" and @cs="no" and @lemma="zin"]/number(@begin)] and node[@rel="hd" and @pt="n" and @cs="no" and @lemma="zin" and number(@begin) < ../../../node[@rel="--" and @pt="let"]/number(@begin)]]] and node[@rel="--" and @pt="let"]]';
  3. $xpath = applyCs($xpath);
  4. var_dump($xpath);
  5. function applyCs($xpath) {
  6. if (strpos($xpath, '@cs="no"') !== false) {
  7. preg_match_all("/(?<=node\[).*?(?=node\[|\])/", $xpath, $matches);
  8.  
  9. foreach ($matches[0] as $match) {
  10. if (strpos($match, '@cs="no"') !== false) {
  11. $dummyMatch = preg_replace('/(?: and )?@cs="no"/', '', $match);
  12.  
  13. if (strpos($dummyMatch, '@word="') !== false) {
  14. $dummyMatch = str_replace('@word="', 'lower-case(@word)="', $dummyMatch);
  15. }
  16. if (strpos($dummyMatch, '@lemma="') !== false) {
  17. $dummyMatch = str_replace('@lemma="', 'lower-case(@lemma)="', $dummyMatch);
  18. }
  19. $xpath = preg_replace('/'.preg_quote($match, '/').'/', $dummyMatch, $xpath, 1);
  20. var_dump($dummyMatch);
  21. }
  22. }
  23. }
  24. return $xpath;
  25. }
  26.  
Success #stdin #stdout 0s 52488KB
stdin
Standard input is empty
stdout
string(81) "@rel="det" and @pt="lid" and lower-case(@word)="een" and lower-case(@lemma)="een""
string(106) "@rel="det" and @pt="lid" and lower-case(@word)="een" and lower-case(@lemma)="een" and number(@begin) < ../"
string(50) "@rel="hd" and @pt="n" and lower-case(@lemma)="zin""
string(81) "@rel="hd" and @pt="n" and lower-case(@lemma)="zin" and number(@begin) < ../../../"
string(814) "//node[@cat="top" and node[@rel="--" and @cat="smain" and node[@rel="su" and @pt="vnw" and @word="Dit" and @lemma="dit" and number(@begin) < ../node[@rel="hd" and @pt="ww" and @lemma="zijn"]/number(@begin)] and node[@rel="hd" and @pt="ww" and @lemma="zijn" and number(@begin) < ../node[@rel="predc" and @cat="np"]/node[@rel="det" and @pt="lid" and lower-case(@word)="een" and lower-case(@lemma)="een"]/number(@begin)] and node[@rel="predc" and @cat="np" and node[@rel="det" and @pt="lid" and lower-case(@word)="een" and lower-case(@lemma)="een" and number(@begin) < ../node[@rel="hd" and @pt="n" and lower-case(@lemma)="zin"]/number(@begin)] and node[@rel="hd" and @pt="n" and lower-case(@lemma)="zin" and number(@begin) < ../../../node[@rel="--" and @pt="let"]/number(@begin)]]] and node[@rel="--" and @pt="let"]]"