php문에서 문자열 사이에...
php문에서 문자열 사이에 글자를 삽입 할수 있는 함수 있나요?
[code]
<?PHP
$file_pointer = @fopen("./data.php", "r");
$file = fread($file_pointer, 1000);
if($file_pointer) {
echo "파일을 성공적으로 열었습니다.<hr>";
echo $file;
$no_id = @explode("echo \"아래에 소스 삽입되어야 정상\";", $file);
$no_id = @explode("echo \"위에 소스가 삽입되어야 정상\";", $no_id[1]);
$file_pointer2 = fopen("./data.php", "a");
$text = chr(13) . "\n\nGood Evening\n\n";
$con = str_ireplace($no_id[0], $text, $file);
fwrite($file_pointer2, str_ireplace($file, $con, $file));
} else {
echo("파일 열기를 실패했습니다.");
}
@fclose($file_pointer);
?>
[/code]
대충 이런식으로 해봤는데 중복으로 소스 처리가 됩니다.
data.php 원본
[code]
<?
$asdas = "asdasd";
echo "아래에 소스 삽입되어야 정상";
echo "위에 소스가 삽입되어야 정상";
?>
[/code]
소스 실행후 결과
[code]
<?
$asdas = "asdasd";
echo "아래에 소스 삽입되어야 정상";
echo "위에 소스가 삽입되어야 정상";
?><?
$asdas = "asdasd";
echo "아래에 소스 삽입되어야 정상";
Good Evening
echo "위에 소스가 삽입되어야 정상";
?>
[/code]
[code]
<?PHP
$file_pointer = @fopen("./data.php", "r");
$file = fread($file_pointer, 1000);
if($file_pointer) {
echo "파일을 성공적으로 열었습니다.<hr>";
echo $file;
$no_id = @explode("echo \"아래에 소스 삽입되어야 정상\";", $file);
$no_id = @explode("echo \"위에 소스가 삽입되어야 정상\";", $no_id[1]);
$file_pointer2 = fopen("./data.php", "a");
$text = chr(13) . "\n\nGood Evening\n\n";
$con = str_ireplace($no_id[0], $text, $file);
fwrite($file_pointer2, str_ireplace($file, $con, $file));
} else {
echo("파일 열기를 실패했습니다.");
}
@fclose($file_pointer);
?>
[/code]
대충 이런식으로 해봤는데 중복으로 소스 처리가 됩니다.
data.php 원본
[code]
<?
$asdas = "asdasd";
echo "아래에 소스 삽입되어야 정상";
echo "위에 소스가 삽입되어야 정상";
?>
[/code]
소스 실행후 결과
[code]
<?
$asdas = "asdasd";
echo "아래에 소스 삽입되어야 정상";
echo "위에 소스가 삽입되어야 정상";
?><?
$asdas = "asdasd";
echo "아래에 소스 삽입되어야 정상";
Good Evening
echo "위에 소스가 삽입되어야 정상";
?>
[/code]
|
댓글을 작성하시려면 로그인이 필요합니다.
로그인
댓글 17개
$asdas = "asdasd";
echo "아래에 소스 삽입되어야 정상";
echo "위에 소스가 삽입되어야 정상";
?>
1. 어떤 화일을 연상태인데 다시 불러서 그 화일을 쓰기 할수 있는가?
- fclose 하지 않고 쓸수 있나요?
2. 두번째로 열었을때 fread 하지 않고 가공이 가능한가요?
이렇게 문제가 있지 않나요?
위 문제제기는 따로두고요. 어째든 제 생각은
a를 열고 가공을 한다음 새로 b파일(임시)을 만들고 write 이렇게 하고 a,b 각 파일의 이름을 바꾼다.
이게 맞는것 같습니다만 직접해보기 힘들어서 쩝
중복의 이유는
$file_pointer2 = fopen("./data.php", "a"); <-- a는 append(추가) 이니까요.
그래서... 로직 관계없이 그냥 쓰게 됬습니다.
에디터 처럼 중간에 넣을수는 없거든요. 그건 말그대로 에디터가 그 기능을 대신해주는 거니까요.
여러파일을 같이 처리 하는 과정에서 오류가 날수 있구요. 또한 과도한 트래픽이 일어날것 같아서 그방법은 안썼습니다 ㅠ.ㅠ;;
resource fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource $context ]] )
'a' Open for writing only; place the file pointer at the end of the file. If the file does not exist, attempt to create it.
포인터가 문장의 끝으로 간다라고 되어 있습니다. 즉 기존파일의 끝부분에 포인터가 가기 때문에 기존 텍스트를 유지하면서 새로운 text를 추가하게 됩니다.
그래서 중복이 일어납니다.
임시화일을 쓰셔야 합니다. ㅋㅋ
파일을 생성하는 방식은 오래전부터 써온 무식한 방식이지만 이 방법보다 좋은 방법(빠르고 편하다)은 없습니다. 추천드립니다. *^^*
(요즘 머리쓰는 일이 없어서 허허)
저도 그냥 시간나서 다시 해보는것입니다.
머리도 자주 안쓰는 굳어버려서,, ㅠ.ㅠ;
즉, HTML 형식으로 읽혀지지 싶은데요.
HTML 소스에 원하는 위치에 글자 집어 넣어서 다시 기록하던지 뿌리는것은 간단한 문제죠.
단, 글자를 넣을 위치가 규칙성이 있어야겠지요.
로컬 파일이라서 그런강...희안하네요.ㅎ
로컬에 있는 PHP 파일을 fopen으로 읽어와 본적이 없어서요.
로컬은 텍스트 자체로 읽혀진다는 사실 오늘에야 알았네요..ㅠㅠ
http://terrorboy.net/test/ - 동작