[1] まず最初に
-----------------------------
は ""ようなタグに置き換えておき、
最後にもとに戻す。
これをおこなうのがCObfHtmlBlockである。
[2] CObfText::parse
次にタグとテキストを分割してArrayにいれる。
下の例を考える。
.... text1 .... .... text2 .... ....
これを以下のようなArrayに分解する。
$tt = array(
'type'=>'tag',
'str'=>'',
'type'=>'text',
'str'=>'...text1...'
'type'=>'tag',
'str'=>'',
'type'=>'text',
'str'=>'...text2...'
'type'=>'tag',
'str'=>'',
);
[3] CObfText::encode
全ステップで作ったArrayの'str'を難読化する。
[3-1]
まず、" "や">"のようなEntityは元の記号に直しておく
//-- " " ==> " "
$s = html_entity_decode($s, ENT_COMPAT, self::$encoding);
ちなみに" "は non-breaking space(HTML )に変換される。
にではない。
[3-2]
mb_encode_numericentityですべての文字をEntityに変換される。
//-- encode
$s = mb_encode_numericentity($s, array(0x0, 0xffff, 0, 0xffff), self::$encoding);