ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
class.ilWebDAVMounInstructionsDocumentProcessorBase.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22{
23 public function parseInstructionsToAssocArray(string $a_raw_mount_instructions): array
24 {
25 $processing_text = $a_raw_mount_instructions;
26
27 $found_instructions = [];
28
29 do {
30 $pair_found = false;
31 $open_with_no_close_tag_found = false;
32
33 $open_tag_start_pos = strpos($processing_text, '[');
34 $open_tag_end_pos = strpos($processing_text, ']');
35
36 if ($open_tag_start_pos !== false && $open_tag_end_pos !== false && $open_tag_start_pos < $open_tag_end_pos) {
37 $tag_name = substr(
38 $processing_text,
39 $open_tag_start_pos + 1,
40 $open_tag_end_pos - $open_tag_start_pos - 1
41 );
42 $close_tag = "[/$tag_name]";
43
44 $close_tag_pos = strpos($processing_text, $close_tag);
45
46 if ($close_tag_pos !== false && $open_tag_end_pos < $close_tag_pos) {
47 $found_instructions[$tag_name] = substr(
48 $processing_text,
49 $open_tag_end_pos + 1,
50 $close_tag_pos - $open_tag_end_pos - 1
51 );
52
53 $processing_text = substr($processing_text, $close_tag_pos + strlen($close_tag));
54 $pair_found = true;
55 } else {
56 $processing_text = substr($processing_text, $open_tag_end_pos + 1);
57 $open_with_no_close_tag_found = true;
58 }
59 }
60 } while ($pair_found || $open_with_no_close_tag_found);
61
62 if ($found_instructions === []) {
63 return [$a_raw_mount_instructions];
64 }
65
66 return $found_instructions;
67 }
68}