디렉토리전체에 string 변경하거나, charset 변경하는 코드
처음으로 올려봅니다.
PHP 개발자는 아니고 사이트 개발 의뢰하려고 하는데 활동점수가 부족해서..
제가 사이트 개발하면서 PHP 공부해가면서 만든 코드입니다.
원본 디렉토리는 변경없이 new directory에 새로운 인코딩 지원하게끔 파일 변경해주는 코드입니다.
<?php
function iconv_copy($src_filename, $dest_filename, $src_charset, $to_charset)
{
$retry=0;
do
{
$src_file=fopen($src_filename, "r");
if( $src_file )
break;
echo "Unable to open remote file[$retry] [$src_filename]<br>";
}while($retry++ < 10 );
$retry=0;
do
{
$dest_file=fopen($dest_filename, "w");
if( $dest_file )
break;
echo "Unable to open file[$retry] [$dest_filename]<br>";
}while($retry++ < 10 );
//echo "FILE[$src_filename]<br>";
while (!feof($src_file))
{
$line=fgets($src_file);
if(( $tok=stristr($line, "charset=")) )
{
$str=strtok($tok, "=");
$str=strtok("\\\">");
$src_charset=str_replace("\"","",$str);
//echo "Find[$src_charset]<br>";
break;
}
}
fseek($src_file, 0, SEEK_SET);
while (!feof($src_file))
{
$line=fgets($src_file);
if( stristr($line, "charset=") )
{
//echo "CHARSET[$src_charset][$to_charset] [$line] => ";
$line=str_ireplace($src_charset, $to_charset, $line);
//echo "[$line]<br>";
}
fputs($dest_file, iconv($src_charset, $to_charset, $line));
}
fclose($src_file);
fclose($dest_file);
}
{
$retry=0;
do
{
$src_file=fopen($src_filename, "r");
if( $src_file )
break;
echo "Unable to open remote file[$retry] [$src_filename]<br>";
}while($retry++ < 10 );
$retry=0;
do
{
$dest_file=fopen($dest_filename, "w");
if( $dest_file )
break;
echo "Unable to open file[$retry] [$dest_filename]<br>";
}while($retry++ < 10 );
//echo "FILE[$src_filename]<br>";
while (!feof($src_file))
{
$line=fgets($src_file);
if(( $tok=stristr($line, "charset=")) )
{
$str=strtok($tok, "=");
$str=strtok("\\\">");
$src_charset=str_replace("\"","",$str);
//echo "Find[$src_charset]<br>";
break;
}
}
fseek($src_file, 0, SEEK_SET);
while (!feof($src_file))
{
$line=fgets($src_file);
if( stristr($line, "charset=") )
{
//echo "CHARSET[$src_charset][$to_charset] [$line] => ";
$line=str_ireplace($src_charset, $to_charset, $line);
//echo "[$line]<br>";
}
fputs($dest_file, iconv($src_charset, $to_charset, $line));
}
fclose($src_file);
fclose($dest_file);
}
function dir_iconv($from_dir, $to_dir, $src_charset, $to_charset)
{
if( !is_dir($from_dir) || !is_dir($to_dir) )
{
echo "$from_dir or $to_dir is not a dir<br>";
return;
}
$dh=opendir($from_dir);
if( !$dh )
{
echo "$from_dir open fail!<br>";
return;
}
while(($file = readdir($dh)) != false)
{
if( $file == "." || $file == ".." )
continue;
if (is_file($from_dir . '/' . $file))
{
iconv_copy($from_dir . '/' . $file, $to_dir . '/'. $file, $src_charset, $to_charset);
}
else if( is_dir($from_dir . '/' . $file))
{
mkdir($to_dir . '/'. $file);
dir_iconv($from_dir . '/' . $file, $to_dir . '/'. $file, $src_charset, $to_charset);
}
}
closedir($dh);
}
{
if( !is_dir($from_dir) || !is_dir($to_dir) )
{
echo "$from_dir or $to_dir is not a dir<br>";
return;
}
$dh=opendir($from_dir);
if( !$dh )
{
echo "$from_dir open fail!<br>";
return;
}
while(($file = readdir($dh)) != false)
{
if( $file == "." || $file == ".." )
continue;
if (is_file($from_dir . '/' . $file))
{
iconv_copy($from_dir . '/' . $file, $to_dir . '/'. $file, $src_charset, $to_charset);
}
else if( is_dir($from_dir . '/' . $file))
{
mkdir($to_dir . '/'. $file);
dir_iconv($from_dir . '/' . $file, $to_dir . '/'. $file, $src_charset, $to_charset);
}
}
closedir($dh);
}
function copy_with_str_replace($src_filename, $dest_filename, $from_str, $to_str)
{
$retry=0;
do
{
$src_file=fopen($src_filename, "r");
if( $src_file )
break;
echo "Unable to open remote file[$retry] [$src_filename]<br>";
}while($retry++ < 10 );
$retry=0;
do
{
$dest_file=fopen($dest_filename, "w");
if( $dest_file )
break;
echo "Unable to open file[$retry] [$dest_filename]<br>";
}while($retry++ < 10 );
while (!feof($src_file))
{
$line=fgets($src_file);
$line = str_replace($from_str, $to_str, $line);
$line = str_ireplace($from_str, $to_str, $line);
fputs($dest_file, $line);
}
fclose($src_file);
fclose($dest_file);
}
{
$retry=0;
do
{
$src_file=fopen($src_filename, "r");
if( $src_file )
break;
echo "Unable to open remote file[$retry] [$src_filename]<br>";
}while($retry++ < 10 );
$retry=0;
do
{
$dest_file=fopen($dest_filename, "w");
if( $dest_file )
break;
echo "Unable to open file[$retry] [$dest_filename]<br>";
}while($retry++ < 10 );
while (!feof($src_file))
{
$line=fgets($src_file);
$line = str_replace($from_str, $to_str, $line);
$line = str_ireplace($from_str, $to_str, $line);
fputs($dest_file, $line);
}
fclose($src_file);
fclose($dest_file);
}
function dir_with_str_replace($from_dir, $to_dir, $from_str, $to_str)
{
if( !is_dir($from_dir) || !is_dir($to_dir) )
{
echo "$from_dir or $to_dir is not a dir<br>";
return;
}
$dh=opendir($from_dir);
if( !$dh )
{
echo "$from_dir open fail!<br>";
return;
}
while(($file = readdir($dh)) != false)
{
if( $file == "." || $file == ".." )
continue;
$src = $from_dir . '/' . $file;
$dest = $to_dir . '/'. $file;
$dest = str_ireplace($from_str, $to_str, $dest);
if (is_file($src))
{
copy_with_str_replace($src, $dest, $from_str, $to_str);
}
else if( is_dir($src))
{
mkdir($dest);
dir_with_str_replace($src, $dest, $from_str, $to_str);
}
}
closedir($dh);
}
{
if( !is_dir($from_dir) || !is_dir($to_dir) )
{
echo "$from_dir or $to_dir is not a dir<br>";
return;
}
$dh=opendir($from_dir);
if( !$dh )
{
echo "$from_dir open fail!<br>";
return;
}
while(($file = readdir($dh)) != false)
{
if( $file == "." || $file == ".." )
continue;
$src = $from_dir . '/' . $file;
$dest = $to_dir . '/'. $file;
$dest = str_ireplace($from_str, $to_str, $dest);
if (is_file($src))
{
copy_with_str_replace($src, $dest, $from_str, $to_str);
}
else if( is_dir($src))
{
mkdir($dest);
dir_with_str_replace($src, $dest, $from_str, $to_str);
}
}
closedir($dh);
}
mkdir("edit2");
dir_iconv("geditor", "edit2", "EUC-KR", "UTF-8");
//dir_with_str_replace("simple_red", "red");
?>
dir_iconv("geditor", "edit2", "EUC-KR", "UTF-8");
//dir_with_str_replace("simple_red", "red");
?>
댓글 1개
게시글 목록
| 번호 | 제목 |
|---|---|
| 1716316 | |
| 1716313 | |
| 1716309 | |
| 1716302 | |
| 1716298 | |
| 1716291 | |
| 1716290 | |
| 1716262 | |
| 1716254 | |
| 1716252 | |
| 1716249 | |
| 1716241 | |
| 1716222 | |
| 1716214 | |
| 1716204 | |
| 1716200 | |
| 1716197 | |
| 1716195 | |
| 1716188 | |
| 1716176 | |
| 1716167 | |
| 1716149 | |
| 1716140 | |
| 1716139 | |
| 1716125 | |
| 1716122 | |
| 1716120 | |
| 1716119 | |
| 1716114 | |
| 1716111 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기