php문에서 문자열 사이에... 정보
php문에서 문자열 사이에...
본문
php문에서 문자열 사이에 글자를 삽입 할수 있는 함수 있나요?
대충 이런식으로 해봤는데 중복으로 소스 처리가 됩니다.
data.php 원본
소스 실행후 결과
<?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);
?>
대충 이런식으로 해봤는데 중복으로 소스 처리가 됩니다.
data.php 원본
<?
$asdas = "asdasd";
echo "아래에 소스 삽입되어야 정상";
echo "위에 소스가 삽입되어야 정상";
?>
소스 실행후 결과
<?
$asdas = "asdasd";
echo "아래에 소스 삽입되어야 정상";
echo "위에 소스가 삽입되어야 정상";
?><?
$asdas = "asdasd";
echo "아래에 소스 삽입되어야 정상";
Good Evening
echo "위에 소스가 삽입되어야 정상";
?>
댓글 전체
data.php 에 뭐가 들어가나요?
<?
$asdas = "asdasd";
echo "아래에 소스 삽입되어야 정상";
echo "위에 소스가 삽입되어야 정상";
?>
$asdas = "asdasd";
echo "아래에 소스 삽입되어야 정상";
echo "위에 소스가 삽입되어야 정상";
?>
그냥 로직 에러인것으로 보입니다만
1. 어떤 화일을 연상태인데 다시 불러서 그 화일을 쓰기 할수 있는가?
- fclose 하지 않고 쓸수 있나요?
2. 두번째로 열었을때 fread 하지 않고 가공이 가능한가요?
이렇게 문제가 있지 않나요?
위 문제제기는 따로두고요. 어째든 제 생각은
a를 열고 가공을 한다음 새로 b파일(임시)을 만들고 write 이렇게 하고 a,b 각 파일의 이름을 바꾼다.
이게 맞는것 같습니다만 직접해보기 힘들어서 쩝
중복의 이유는
$file_pointer2 = fopen("./data.php", "a"); <-- a는 append(추가) 이니까요.
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를 추가하게 됩니다.
그래서 중복이 일어납니다.
임시화일을 쓰셔야 합니다. ㅋㅋ
파일을 생성하는 방식은 오래전부터 써온 무식한 방식이지만 이 방법보다 좋은 방법(빠르고 편하다)은 없습니다. 추천드립니다. *^^*
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를 추가하게 됩니다.
그래서 중복이 일어납니다.
임시화일을 쓰셔야 합니다. ㅋㅋ
파일을 생성하는 방식은 오래전부터 써온 무식한 방식이지만 이 방법보다 좋은 방법(빠르고 편하다)은 없습니다. 추천드립니다. *^^*
그래야겠네요 좋은 조언 감사합니다.
무엇을 만드시려는지 잘 모르겠지만 구미가 당깁니다.
(요즘 머리쓰는 일이 없어서 허허)
(요즘 머리쓰는 일이 없어서 허허)
ㅎ.ㅎ
저도 그냥 시간나서 다시 해보는것입니다.
머리도 자주 안쓰는 굳어버려서,, ㅠ.ㅠ;
저도 그냥 시간나서 다시 해보는것입니다.
머리도 자주 안쓰는 굳어버려서,, ㅠ.ㅠ;
헐....PHP 소스를 fopen함수로 열면 실행결과가 읽혀지지 소스로 읽혀지지 않지요.
즉, HTML 형식으로 읽혀지지 싶은데요.
HTML 소스에 원하는 위치에 글자 집어 넣어서 다시 기록하던지 뿌리는것은 간단한 문제죠.
단, 글자를 넣을 위치가 규칙성이 있어야겠지요.
즉, HTML 형식으로 읽혀지지 싶은데요.
HTML 소스에 원하는 위치에 글자 집어 넣어서 다시 기록하던지 뿌리는것은 간단한 문제죠.
단, 글자를 넣을 위치가 규칙성이 있어야겠지요.
그럴수도 있겠군요.. 일단 파일을 열었을경우 정상적으로 처리되고 있어서 생각 하지 못햇습니다.
APM 시스템인데 소스로 읽혀지나요?
로컬 파일이라서 그런강...희안하네요.ㅎ
로컬 파일이라서 그런강...희안하네요.ㅎ
리눅스 apm입니다 ㅎ.ㅎ;;;
엥 이건 또 무슨말인지? 로컬파일을 읽을 뿐인데요 그냥 파일을 읽는 겁니다. php소스냐 아니냐는 중요하지 않습니다.
ㅎㅎ 저는 음악 사이트를 긁어와서 리스트 만들어 감상하던 시절을 생각했거든요.
로컬에 있는 PHP 파일을 fopen으로 읽어와 본적이 없어서요.
로컬은 텍스트 자체로 읽혀진다는 사실 오늘에야 알았네요..ㅠㅠ
로컬에 있는 PHP 파일을 fopen으로 읽어와 본적이 없어서요.
로컬은 텍스트 자체로 읽혀진다는 사실 오늘에야 알았네요..ㅠㅠ