2013-12-18 3 views
0

쓰기기능 "에 fwrite는"나는 파일이 잘못된 내용

<?php 
$menu['Position1']['menu1'][]='module1'; 
$menu['Position1']['menu2'][]='module2'; 
?> 

내가 그것을 새로운 노드 배열을 추가하려면이 파일의 코드를 변경합니다. 다음 간단한 코드를 테스트합니다 :

include 'inc.php'; 

//add new value to array 
$menu['Position3']['menu3'][]='module3'; 
$menu['Position4']['menu4'][]='module4'; 

//create string with fomat above 
$text ='<?php ' ."\n"; 
foreach($menu as $position_tmp => $value1_tmp){ 
foreach($value1_tmp as $menu_tmp => $value2_tmp){ 
foreach($value2_tmp as $component_tmp){ 
$text .= "\$menu['" .$position_tmp ."']['" .$menu_tmp ."'][]='" .$component_tmp ."'; \n"; 
} 
} 
} 
$text .= '?>'; 

나는 $ text를 테스트합니다. var_dump ($ text); 출력 :

<?php 
$menu['Position1']['menu1'][]='module1'; 
$menu['Position1']['menu2'][]='module2'; 
$menu['Position3']['menu3'][]='module3'; 
$menu['Position4']['menu4'][]='module4'; 
?> 

괜찮습니다. 나는 inc.php 파일에 쓸 수 : inc.php의

$fp = fopen('inc.php', 'w+'); 
fwrite($fp,$text); 
fclose($fp); 

내용 :

<?php 
$menu['Position1']['menu1'][]='module1'; 
$menu['Position1']['menu2'][]='module2'; 
$menu['Position3']['menu3'][]='module3'; 
$menu['Position3']['menu3'][]='module3'; 
$menu['Position3']['menu3'][]='module3'; 
$menu['Position4']['menu4'][]='module4'; 
$menu['Position4']['menu4'][]='module4'; 
$menu['Position4']['menu4'][]='module4'; 
?> 

나는 이유를 모르겠어요! 그런 다음 newfile : newfile.php를 테스트합니다. 그런 다음 newfile.php의 내용이 정확합니다.

<?php 
$menu['Position1']['menu1'][]='module1'; 
$menu['Position1']['menu2'][]='module2'; 
$menu['Position3']['menu3'][]='module3'; 
$menu['Position4']['menu4'][]='module4'; 
?> 

나는

sleep(5); // I open newfile.php. It's correct. 
unlink('inc.php'); 
rename('newfile.php','inc.php'); 

여전히 inc.php 잘못을 inc.php하는 newfile.php의 이름을 변경, inc.php 삭제하려고합니다. 나는 이해할 수 없다. 나를 도와주세요!

+0

"나는 잠을 inc.php하는 newfile.php의 이름을 변경, inc.php 삭제 시도 (5); 나는 newfile.php 열 // 그것은 맞습니다 링크 해제 ('inc.php');.. 이름 바꾸기 (' newfile.php ','inc.plist.php '); inc.php 여전히 올바르지 않습니다. 이해할 수 없습니다. 도와주세요! " 이름 바꾸기 지시가 확실합니까? –

+0

죄송합니다. 새 파일 이름에 ".plist"가 없습니다. 그 코드는 : rename ('newfile.php', 'inc.php'); – user3111665

답변

0

$ 텍스트를 사용하여 '<?php' 문자열을 추가하면 문제가 발생할 수 있습니다. 더 나은 사용 :

$php_open_tag = htmlentities('<?php'); // Or try like this htmlspecialchars('<?php'); 
$php_close_tag = htmlentities('?>'); 
$text = $php_open_tag . 'YOUR CONTENT' . $php_close_tag ; 
$text = str_replace('&lt;','<',$text); 
$text = str_replace('&gt;','>',$text); 

다음 내용을 작성하려고합니다.

$fp = fopen('inc.php', 'w+'); 
fwrite($fp,$text); 
fclose($fp); 

이 정보가 도움이되기를 바랍니다.

+0

고맙습니다. 하지만 여전히 올바르지 않습니다. 다시 감사합니다! – user3111665