Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> edit_ini_file();, funkcja do edycji plików ini
Mlodycompany
post
Post #1





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Witam. Napisałem na własne potrzeby funkcje do edycji plików ini. Chciałbym abyście ocenili i powiedzieli co jest źle, co poprawić etc.

  1. <?php
  2.  
  3. function edit_ini_file( $file, $values, $section = false ) {
  4. $str = "";
  5. $fo = fopen( $file, "r" );
  6. while ( true ) {
  7. if ( feof( $fo ) ) { //dopisanie nowych wartości na końcu pliku
  8. if ( $section === true ) {
  9. foreach ( $values[ $currentSection ] as $name => $value ) { // dopisanie do ostatniej sekcji
  10. $str .= "{$name} = {$value}\n";
  11. unset( $values[ $currentSection ][ $name ] );
  12. }
  13. unset( $values[ $currentSection ] );
  14. foreach ( $values as $sectionN => $sectionV ) { // dopisanie nowych sekcji i wartosci
  15. $str .= "[{$sectionN}]\n";
  16. foreach ( $sectionV as $name => $value ) {
  17. $str .= "{$name} = {$value}\n";
  18. }
  19. }
  20. }
  21. else{
  22. foreach($values as $name => $value){ //dopisanie nowych wartosci bez sekcji
  23. $str .= "{$name} = {$value}\n";
  24. }
  25. }
  26. break;
  27. }
  28.  
  29. $line = fgets( $fo );
  30.  
  31. if ( $line{0} == ";"){ //przepisanie komentarzy
  32. $str .= $line."\n";
  33. continue;
  34. }
  35. if(trim($line) == "" || $line == "\n") continue;
  36. if ( $section === true && preg_match( "/\[(.*?)\]/", $line, $sectionInfo ) ) {
  37. if ( isSet( $currentSection ) && isset( $values[ $currentSection ] ) ) {
  38. foreach ( $values[ $currentSection ] as $name => $value ) { //dodanie pozostalych wartosci do sekcji
  39. $str .= "{$name} = {$value}\n";
  40. unset( $values[ $currentSection ][ $name ] );
  41. }
  42. unset( $values[ $currentSection ] );
  43. }
  44. $currentSection = $sectionInfo[ 1 ];
  45. $str .= $sectionInfo[ 0 ]."\n";
  46. continue;
  47. }
  48. else if ( $section === true ) {
  49. list($name, $value) = explode( "=", $line );
  50. $name = trim($name);
  51. if ( isSet( $values[ $currentSection ][ $name ] ) ) { //zmiana wartosci
  52. $str .= "{$name} = {$values[ $currentSection ][ $name ]}\n";
  53. unset( $values[ $currentSection ][ $name ] );
  54. continue;
  55. }
  56. else {
  57. $str .= $line."\n";
  58. continue;
  59. }
  60. }
  61. else{
  62. list($name, $value) = explode( "=", $line );
  63. $name = trim($name);
  64. if ( isSet( $values[ $name ] ) ) { //zmiana wartosci
  65. $str .= "{$name} = {$values[ $name ]}\n";
  66. unset( $values[ $name ] );
  67. continue;
  68. }
  69. else {
  70. $str .= $line."\n";
  71. continue;
  72. }
  73. }
  74. }
  75. $fw = fopen($file, "w+");
  76. fwrite($fw, $str);
  77. }
  78. //przykładowe użycie
  79. edit_ini_file( "file.ini", array( "istniejaca_sekcja" => array( "klucz" => "wartosc", "nowy-klucz" => "wartosc" ), "nowa-sekcja" => array( "nowy-klucz" => "wartosc" ) ), true );
  80. edit_ini_file( "file2.ini", array( "klucz" => "wartosc", "nowy-klucz" => "wartosc" ), false );
  81. ?>



Pozdrawiam (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.12.2025 - 09:32