@@ 189-214 (lines=26) @@ | ||
186 | ||
187 | for($i=-1, $ci=count($t); ++$i<$ci;){ |
|
188 | // allowed $ok in parent $p |
|
189 | if($ql = count($q)){ |
|
190 | $p = array_pop($q); |
|
191 | $q[] = $p; |
|
192 | if(isset($cS[$p])){$ok = $cS[$p];} |
|
193 | elseif(isset($cI[$p])){$ok = $eI; $cI['del'] = 1; $cI['ins'] = 1;} |
|
194 | elseif(isset($cF[$p])){$ok = $eF; unset($cI['del'], $cI['ins']);} |
|
195 | elseif(isset($cB[$p])){$ok = $eB; unset($cI['del'], $cI['ins']);} |
|
196 | if(isset($cO[$p])){$ok = $ok + $cO[$p];} |
|
197 | if(isset($cN[$p])){$ok = array_diff_assoc($ok, $cN[$p]);} |
|
198 | }else{$ok = $inOk; unset($cI['del'], $cI['ins']);} |
|
199 | // bad tags, & ele content |
|
200 | if(isset($e) && ($do == 1 or (isset($ok['#pcdata']) && ($do == 3 or $do == 5)))){ |
|
201 | echo '<', $s, $e, $a, '>'; |
|
202 | } |
|
203 | if(isset($x[0])){ |
|
204 | if(strlen(trim($x)) && (($ql && isset($cB[$p])) or (isset($cB[$in]) && !$ql))){ |
|
205 | echo '<div>', $x, '</div>'; |
|
206 | } |
|
207 | elseif($do < 3 or isset($ok['#pcdata'])){echo $x;} |
|
208 | elseif(strpos($x, "\x02\x04")){ |
|
209 | foreach(preg_split('`(\x01\x02[^\x01\x02]+\x02\x01)`', $x, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY) as $v){ |
|
210 | echo (substr($v, 0, 2) == "\x01\x02" ? $v : ($do > 4 ? preg_replace('`\S`', '', $v) : '')); |
|
211 | } |
|
212 | }elseif($do > 4){echo preg_replace('`\S`', '', $x);} |
|
213 | } |
|
214 | // get markup |
|
215 | if(!preg_match('`^(/?)([a-z1-6]+)([^>]*)>(.*)`sm', $t[$i], $r)){$x = $t[$i]; continue;} |
|
216 | $s = null; $e = null; $a = null; $x = null; list($all, $s, $e, $a, $x) = $r; |
|
217 | // close tag |
|
@@ 275-300 (lines=26) @@ | ||
272 | } |
|
273 | ||
274 | // end |
|
275 | if($ql = count($q)){ |
|
276 | $p = array_pop($q); |
|
277 | $q[] = $p; |
|
278 | if(isset($cS[$p])){$ok = $cS[$p];} |
|
279 | elseif(isset($cI[$p])){$ok = $eI; $cI['del'] = 1; $cI['ins'] = 1;} |
|
280 | elseif(isset($cF[$p])){$ok = $eF; unset($cI['del'], $cI['ins']);} |
|
281 | elseif(isset($cB[$p])){$ok = $eB; unset($cI['del'], $cI['ins']);} |
|
282 | if(isset($cO[$p])){$ok = $ok + $cO[$p];} |
|
283 | if(isset($cN[$p])){$ok = array_diff_assoc($ok, $cN[$p]);} |
|
284 | }else{$ok = $inOk; unset($cI['del'], $cI['ins']);} |
|
285 | if(isset($e) && ($do == 1 or (isset($ok['#pcdata']) && ($do == 3 or $do == 5)))){ |
|
286 | echo '<', $s, $e, $a, '>'; |
|
287 | } |
|
288 | if(isset($x[0])){ |
|
289 | if(strlen(trim($x)) && (($ql && isset($cB[$p])) or (isset($cB[$in]) && !$ql))){ |
|
290 | echo '<div>', $x, '</div>'; |
|
291 | } |
|
292 | elseif($do < 3 or isset($ok['#pcdata'])){echo $x;} |
|
293 | elseif(strpos($x, "\x02\x04")){ |
|
294 | foreach(preg_split('`(\x01\x02[^\x01\x02]+\x02\x01)`', $x, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY) as $v){ |
|
295 | echo (substr($v, 0, 2) == "\x01\x02" ? $v : ($do > 4 ? preg_replace('`\S`', '', $v) : '')); |
|
296 | } |
|
297 | }elseif($do > 4){echo preg_replace('`\S`', '', $x);} |
|
298 | } |
|
299 | while(!empty($q) && ($e = array_pop($q))){echo '</', $e, '>';} |
|
300 | $o = ob_get_contents(); |
|
301 | ob_end_clean(); |
|
302 | return $o; |
|
303 | } |