Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] operacje na plikach ini
tenior
post
Post #1





Grupa: Zarejestrowani
Postów: 58
Pomógł: 2
Dołączył: 16.11.2008

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


Problem polega na kilku tych samych ustawieniach
Kod
[Ustawienia]
Kod=275
Wzor=zmienny
[Poboczne]
Kod=438
Wzor=staly


Chodzi aby edytować kod i wzor ale jak widać w klamrach są inne znaczenia, czego użyć do takiej edycji?
str_replace mi tutaj za wiele nie pomoze, trzeba aby skrypt wiedział skąd bierze dana wartość czy z Ustawien czy z Pobocznych

Ten post edytował tenior 6.02.2010, 16:05:49
Go to the top of the page
+Quote Post
batman
post
Post #2





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




parse_ini_file, a potem już sobie poradzisz (podmiana w tablicy i zapisanie do pliku).


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
tenior
post
Post #3





Grupa: Zarejestrowani
Postów: 58
Pomógł: 2
Dołączył: 16.11.2008

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


to sobie nie radzi z dziwnymi znakami, więc odpada
Go to the top of the page
+Quote Post
batman
post
Post #4





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Co masz na myśli pisząc "dziwne znaki"? Z przykładem jaki podałeś, poradzi sobie bez najmniejszego problemu.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
tenior
post
Post #5





Grupa: Zarejestrowani
Postów: 58
Pomógł: 2
Dołączył: 16.11.2008

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


tak wiem, nawet fajnie jak by dzialalo, ale jesli uzyje ! ~ itp to nie bedzie dzialalo jak nalezy
Go to the top of the page
+Quote Post
batman
post
Post #6





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Jak nie? Przecież działa:
  1. [sekcja]
  2. klucz1 = "wartosc"
  3. klucz2 = "!wartosc"
  4. klucz3 = "~wartosc"


  1. var_dump(parse_ini_file('plik.ini', true));


Wynik działania:
Kod
array(1) {
  ["sekcja"]=>
  array(3) {
    ["klucz1"]=>
    string(7) "wartosc"
    ["klucz2"]=>
    string(8) "!wartosc"
    ["klucz3"]=>
    string(8) "~wartosc"
  }
}



--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
tenior
post
Post #7





Grupa: Zarejestrowani
Postów: 58
Pomógł: 2
Dołączył: 16.11.2008

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


plik ini
Kod
[sekcja]
klucz1=~~ wartosc ~~
klucz2=!wartosc
klucz3=~wartosc

[sekcja2]
klucz1=wartosc !
klucz2=!wartosc
klucz3=~wartosc

[sekcja3]
klucz1= % wartosc
klucz2=!wartosc
klucz3=~wartosc


kod php
  1. var_dump(parse_ini_file('plik.ini', true));


wynik
Kod
Warning: Error parsing plik.ini on line 2 in /home/ventrilo/www/zlec/2/index.php on line 2
bool(false)
Go to the top of the page
+Quote Post
Fifi209
post
Post #8





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Coś takiego:

  1. $text = file('test.txt');
  2. $data = array();
  3.  
  4. foreach ($text as $value) {
  5. static $new_k;
  6. if (strpos($value, '[') !== false) {
  7. preg_match('#\[([^\]]+)\]#', $value, $matches);
  8. $new_k = $matches[1];
  9. }else{
  10. list($key, $value) = explode('=', $value);
  11. if (!empty($new_k)) {
  12. $data[$new_k][$key] = $value;
  13. }else{
  14. $data[][$key] = $value;
  15. }
  16. }
  17. }
  18.  
  19. echo '<pre>';
  20. print_r($data);


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
batman
post
Post #9





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Porównaj mój plik z Twoim plikiem ini i znajdź różnice. Jak je zastosujesz u siebie, nie będziesz dostawał błędów.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
gothye
post
Post #10





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

Ostrzeżenie: (0%)
-----


albo tak :

  1. function parse_ini_file($filename, $process_sections = false) 
  2. {
  3.           $ini_array = array();
  4.          $section = '';
  5.          $lines = file($filename);
  6.          foreach($lines as $line)
  7.          {
  8.                   $line = trim($line);
  9.  
  10.                   if($line == '' || $line[0] == ';' || $line[0] == '#')
  11.                            continue;
  12.  
  13.                   list($sec_name) = sscanf($line, "[%[^]]");
  14.  
  15.                   if( $sec_name )
  16.                            $section = trim($sec_name);
  17.                   else
  18.                   {
  19. list($property, $value) = sscanf($line, "%[^=] = '%[^']'");
  20. if ( !$property || !$value )
  21. {
  22. list($property, $value) = sscanf($line, "%[^=] = \"%[^\"]\"");
  23. if ( !$property || !$value )
  24. {
  25. list($property, $value) = sscanf($line, "%[^=] = %[^;#]");
  26. if( !$property || !$value )
  27. continue;
  28. else
  29. $value = trim($value, "\"'");
  30. }
  31. }
  32.  
  33. $property = trim($property);
  34. $value = trim($value);
  35.  
  36. if($process_sections)
  37. $ini_array[$section][$property] = $value;
  38. else
  39. $ini_array[$property] = $value;
  40. }
  41. }
  42.  
  43. return $ini_array;
  44. }





--------------------
Nie udzielam pomocy poprzez PW
Go to the top of the page
+Quote Post
tenior
post
Post #11





Grupa: Zarejestrowani
Postów: 58
Pomógł: 2
Dołączył: 16.11.2008

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


@batman nie moze byc cudzysłowów
reszta dziala, właśnie coś takiego szukałem.
Go to the top of the page
+Quote Post
batman
post
Post #12





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Z czystej ciekawości zapytam. Dlaczego nie może być cudzysłowów?


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
tenior
post
Post #13





Grupa: Zarejestrowani
Postów: 58
Pomógł: 2
Dołączył: 16.11.2008

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


program sie wtedy nie wlacza, dlaczego nie wiem
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 03:35