fork download
  1. <?php
  2.  
  3. $re = '@\[([a-zA-Z0-9]+)\]|(\w+)|[][=?~#!]@';
  4. $strs =array('DeviceLocation[West12]', '#=Device', '?[1234]=#Martin', '[Device]=test');
  5.  
  6. foreach ($strs as $str) {
  7. preg_match_all($re, $str, $matches, PREG_SET_ORDER);
  8. $results = array();
  9. $match_val = "";
  10. $match_val2 = "";
  11. foreach ($matches as $m) {
  12. if (!empty($m[1])) {
  13. $match_val = trim($m[1], "[]");
  14. array_push($results, "[]");
  15. } else if (!empty($m[2]))
  16. $match_val2 = $m[2];
  17. else {
  18. array_push($results, $m[0]);
  19. }
  20. }
  21. echo "Match Value 1: " . $match_val . "\n";
  22. echo "Match Value 2: " . $match_val2 . "\n";
  23. echo "Symbols: " . implode(", ", $results);
  24. echo "\n-----\n";
  25. }
  26.  
Success #stdin #stdout 0s 52488KB
stdin
Standard input is empty
stdout
Match Value 1: West12
Match Value 2: DeviceLocation
Symbols: []
-----
Match Value 1: 
Match Value 2: Device
Symbols: #, =
-----
Match Value 1: 1234
Match Value 2: Martin
Symbols: ?, [], =, #
-----
Match Value 1: Device
Match Value 2: test
Symbols: [], =
-----