Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> read from file
topcio
post 27.11.2022, 12:33:27
Post #1





Grupa: Zarejestrowani
Postów: 140
Pomógł: 0
Dołączył: 14.01.2017

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


Witajcie

Może głupie pytanie, ale

mam plik konfiguracyjny
i chciałbym z niego wyciągnąć dane, ale..


tekst_1 = [
0,
0,
0,
0,
]

tekst_2 = [
0,
0,
0,
0,
]


dane są mniej więcej w takiej postaci chciałbym wyciągnąć wszystko z tekst_2 czyli co jest po między [ i ] ale żeby każda z linii była w oddzielnym polu input do edycji.


Pomoże ktoś?


dzięki


Dobra może napiszę więcej, by było bardziej zrozumiałe.

Kod wygląda tak
  1. if ($first == "Zaopatrzenie") {
  2. echo "<h2 class=\"mt-2\"><p><b>", $first, "</b></p></h2>";
  3. foreach($type as $key => $value) {
  4. echo "<p><b>", $key, "</b></p>";
  5. echo "<ul>";
  6. foreach($value as $item) {
  7. if (strtok($item, '=') == "Test_1" ) {
  8. $config_file = "acc_config/" . $_GET['id'] . "/settings.cfg";
  9. $searched_settings = strtok($item, '=');
  10. header('Content-Type: text/plain');
  11. $contents = file_get_contents($config_file);
  12. $pattern = preg_quote($searched_settings, '/');
  13. $pattern = "/^.*$pattern.*\$/m";
  14. if (preg_match_all($pattern, $contents, $matches)) {
  15. $wynik = (str_replace(array($searched_settings, "\"", ": ", ",", " "), "",implode($matches[0])));
  16. }
  17. $true = "true";
  18. $false = "false";
  19. if(strpos($wynik, $true) !== false) {
  20. echo "<li>";
  21. echo "<input type=\"checkbox\" name=\"checkbox\" checked /> ";
  22. echo substr($item, strpos($item, "=") + 1), "</li>";
  23. }
  24. else if(strpos($wynik, $false) !== false) {
  25. echo "<li>";
  26. echo "<input type=\"checkbox\" name=\"checkbox\" unchecked /> ";
  27. echo substr($item, strpos($item, "=") + 1), "</li>";
  28. }
  29. }
  30. if (strtok($item, '=') == "Test_2" ) {
  31. $config_file = "acc_config/" . $_GET['id'] . "/settings.cfg";
  32. $searched_settings = strtok($item, '=');
  33. header('Content-Type: text/plain');
  34. $contents = file_get_contents($config_file);
  35. $pattern = preg_quote($searched_settings, '/');
  36. $pattern = "/^.*$pattern.*\$/m";
  37. if (preg_match_all($pattern, $contents, $matches)) {
  38. $wynik = (str_replace(array($searched_settings, "\"", ": ", ",", " "), "",implode($matches[0])));
  39. echo "<li>", substr($item, strpos($item, "=") + 1), " ";
  40. echo "<input class=\"form-text\" name=\"test\" type=\"text\" value=\"", $wynik , "\" required/>";
  41. echo " (Musi być w Twojej gildii)</li>";
  42. }
  43. }
  44. if (strtok($item, '=') == "Test_3" ) {
  45. $config_file = "acc_config/" . $_GET['igg_id'] . "/settings.cfg";
  46. $searched_settings = strtok($item, '=');
  47. header('Content-Type: text/plain');
  48. $contents = file_get_contents($config_file);
  49. $pattern = preg_quote($searched_settings, '/');
  50. $pattern = "/^.*$pattern.*\$/m";
  51. if (preg_match_all($pattern, $contents, $matches)) {
  52. $wynik = (str_replace(array($searched_settings, "\"", ": ", ",", " "), "",implode($matches[0])));
  53. }
  54. $true = "true";
  55. $false = "false";
  56. if(strpos($wynik, $true) !== false) {
  57. echo "<li>";
  58. echo "<input type=\"checkbox\" name=\"checkbox\" checked /> ";
  59. echo substr($item, strpos($item, "=") + 1), "</li>";
  60. }
  61. else if(strpos($wynik, $false) !== false) {
  62. echo "<li>";
  63. echo "<input type=\"checkbox\" name=\"checkbox\" unchecked /> ";
  64. echo substr($item, strpos($item, "=") + 1), "</li>";
  65. }
  66. }
  67. }
  68. echo "</ul>";
  69. }
  70. echo "</ul>";
  71. };
  72. }


Tak wygląda plik konfiguracyjny

  1. "tablica": {
  2. "Test_1": true,
  3. "Test_2": "TEXT",
  4. "Test_3": [
  5. true,
  6. true,
  7. true,
  8. true,
  9. true
  10. ],
  11. "Test_4": [
  12. 10,
  13. 20,
  14. 35,
  15. 50,
  16. 150
  17. ],
  18. "Test_5": [
  19. 0,
  20. 30,
  21. 30,
  22. 30,
  23. 30
  24. ]
  25. },



Jeśli w pliku konfiguracujnym jest tylko jedna linijka, której dotyczy zapytanie jest Ok, ale gdy już jest potrzeba zczytać kilka linijek, nie wiem jak to ugyźć, dla Test_3 Test_4 Test_5

Ten post edytował topcio 27.11.2022, 12:39:58
Go to the top of the page
+Quote Post
viking
post 27.11.2022, 12:54:52
Post #2





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Zdecyduj się jaki format danych masz bo już ten drugi przykład sugeruje json (json_decode).


--------------------
Go to the top of the page
+Quote Post
topcio
post 27.11.2022, 15:06:52
Post #3





Grupa: Zarejestrowani
Postów: 140
Pomógł: 0
Dołączył: 14.01.2017

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


Zapewne masz rację, dawno nie siedziałem w pisaniu kodu, i muszę sporo nadrobić. Pewnie jest prostsza metoda na szukanie tego co potrzebuję w plikach konfiguracyjnych.




No ale ten plik konfiguracyjny nie wygląda jak json, może pierwsze pozycje tak, ale co gdy właśnie jest po ":" tablica w klamrach [1,2,3,4,5], bo właśnie z tym mam problem jak to odczytać
Go to the top of the page
+Quote Post
viking
post 27.11.2022, 15:19:10
Post #4





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Ale co ma być? Próbowałeś to uruchomić?
https://onlinephp.io4g2VrBRKikpTdZAFjYCCSiG...2C&v=8.1.13


--------------------
Go to the top of the page
+Quote Post
topcio
post 27.11.2022, 15:25:15
Post #5





Grupa: Zarejestrowani
Postów: 140
Pomógł: 0
Dołączył: 14.01.2017

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


No tak, kod jest u mnie na serwerze i działa ale jeśli próbuję pobrać dane np z
"Test_3": [
true,
true,
true,
true,
true
],

to wyświetla mi tylko Test_3 [

jak zrobię
  1. var_dump(json_decode($json, false, 512, JSON_BIGINT_AS_STRING));


to dostaję

  1. NULL NULL NULL NULL NULL
  2.  
  3. a dokładnie
  4.  
  5. NULL string(12) "Syntax error"


Ten post edytował topcio 27.11.2022, 15:54:39
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 Wersja Lo-Fi Aktualny czas: 28.03.2024 - 07:07