|
@@ 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 |
|
} |