§ Код
Иногда очень хочется получить парные теги с учетом вложенности, и данный код может в этом серьезно помочь:
1function get_pair_tag($q, $tag = 'table') {
2
3 $out = [];
4 if (preg_match_all('~</?'.$tag.'[^>]*>~is', $q, $cp, PREG_PATTERN_ORDER)) {
5
6 $otag = '';
7 $open = $start = $topen = 0;
8
9 foreach ($cp[0] as $x) {
10
11 $length = strlen($x);
12 $start = strpos($q, $x, $start) + $length;
13
14 if ($x[1] == '/') {
15 $open--;
16 if ($open == 0) $out[] = [$otag, substr($q, $topen, $start - $topen - $length)];
17 } else {
18 if ($open == 0) { $topen = $start; $otag = $x; }
19 $open++;
20 }
21 }
22 }
23
24 return $out;
25}