2009年12月24日木曜日

PHP 16進数の数値参照文字を通常文字に変換する方法



<?php
define("TARGETS_PATH","../targets/"); // 変換対象のファイルが入ってるディレクトリ
define("TARGET_TYPE",".html");

function fileMaker($filePath,$content)
{
if( !touch($filePath) )
{
die("ファイル生成エラー");
}


if (!($filePointer = fopen ($filePath, "w"))) {
die ("ファイルが開けません。");
}

//ファイルロック
flock ($filePointer, LOCK_EX);
//ファイルの書き込み
fputs ($filePointer, $content);

//ファイルロックの解除
flock ($filePointer, LOCK_UN);
}

function HextoDec($data)
{
$str = preg_replace_callback(
"/&#(x|X)([^;]+);/",
create_function(
'$m',
'return "&#".hexdec($m[2]).";";'
),
$data
);
return $str;
}
?>
<?php
$convmap = array(0x0080, 0xffff, 0, 0xffff);
$encoding = "UTF-8";


$dir = opendir(TARGETS_PATH);

while( $file = readdir($dir) )
{
if ( !is_dir($file) ) {
$path = $file;
if ( ereg(TARGET_TYPE,$path) ) {
$content = file_get_contents(TARGETS_PATH.$file);
$c = HextoDec($content);
$c = mb_decode_numericentity($c,$convmap,$encoding);
fileMaker(TARGETS_PATH.$path,$c);
}
}
}
?>



まぁこんな感じ
一応実行する前にを取ってください!


コメントと解説少なくてごめんw

0 件のコメント:

コメントを投稿