memo.xight.org

日々のメモ

HTMLエンティティから元の文字に戻す

Summary

文字列中のHTML特殊文字を元に戻す.
htmlspecialchars()の逆の操作.
function unhtmlspecialchars( $str )
{
	$entry = array_flip( get_html_translation_table( HTML_SPECIALCHARS ) );
	return strtr( $str, $entry );
}


function unhtmlentities($string)
{
	// 数値エンティティの置換
	$string = preg_replace('~&#x([0-9a-f]+);~ei', 'chr(hexdec("\\1"))', $string);
	$string = preg_replace('~&#([0-9]+);~e', 'chr(\\1)', $string);

	// 文字エンティティの置換
	$trans_tbl = get_html_translation_table(HTML_ENTITIES);
	$trans_tbl = array_flip($trans_tbl);
	return strtr($string, $trans_tbl);
}

Reference

マイクロチップス - PHP Tips
http://www.sound-uz.jp/php/tips/micro.html#c01