[PHP-users 34444] Re: htmlタグのエスケープ処理
KUBO Tetsuro
kubo @ calico.co.jp
2009年 3月 19日 (木) 19:22:25 JST
久保です。
単なるアイディアです。
ちょっと順番を変えただけです。
もちろんfoo baaがタグ以外のところにあればアウトですが、foo baaを$TEXTに
入りそうもない文字列にしておけば、実用上問題はないかと。
完璧を求められると無理ですが
function escape_text($TEXT){
// 許可タグ
$Allow =
array('br','p','img','font','table','tr','th','td','a','b','big','center','h','hr','strong','tt','u','li','ul');
$CNT = count($Allow);
for($i=0; $i<$CNT; $i++){
$word = $Allow[$i];
$Patern_1 = "(<)(".$word.")( *)([^(>)]*)(>)";
$Patern_2 = "foo\\2\\3\\4baa";
$Patern_3 = "(<)/(".$word.")( *)([^(>)]*)(>)";
$Patern_4 = "foo/\\2\\3\\4baa";
$TEXT = eregi_replace($Patern_1, $Patern_2, $TEXT);
$TEXT = eregi_replace($Patern_3, $Patern_4, $TEXT);
}
$TEXT = htmlspecialchars($TEXT, ENT_NOQUOTES);
$TEXT = str_replace("foo","<",$TEXT);
$TEXT = str_replace("bar",">",$TEXT);
return $TEXT;
}
========================================================================
PHP-users メーリングリストの案内