Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zbędne spacje
Forum PHP.pl > Forum > Przedszkole
Chrom
Pozdrawiam,
Może ktoś spotkał się z podobnym problemem pobieram taki oto plik:
Cytat
1    0005.018      0003.444        0000.000    0000.620
2    0002.046      0002.058        0000.000    0000.339
3    0007.755      0008.713        0000.000    0004.535
4    0003.268      0001.696        0000.000    0000.099
5    0006.042      0007.941        0000.046    0001.973
6    0000.000      0000.000        0000.000    0000.000
7    0005.154      0004.496        0000.110    0000.364
8    0005.140      0004.527        0000.000    0002.712
9    0006.140      0001.838        0000.000    0001.814
10  0000.467      0000.222        0000.011    0000.942
11  0006.669      0006.127        0000.000    0002.136


Pomiędzy kolejnymi liczbami znajdują się bliżej nieokreślona ilość spacji.
Próbowałem wykorzystać do tego funkcji ereg_replace

$tekst=ereg_replace(" {2,}"," ",$tekst);

Myślałem, że wytnie podwójne spacje i gdybym taki mechanizm powtórzył 3x to wykasowałby zbędne podwójne spacje, ale nie wychodzi.
Czy jest jakiś inny sposób?
dtb
  1. <?php
  2. while (strpos ($tekst, ' ') !== false)
  3.    $tekst = str_replace ('  ', ' ', $tekst);
  4. ?>


btw. po co do zamiany dwóch spacji na jedna potrzebne wyrazenia regularne?
crash
A zwykłe:
  1. <?php
  2. $txt = preg_replace( '/ +/', ' ', $txt );
  3. ?>

nie starczt?
Chrom
Dzieki za szybką odpowiedz,
niestety prawdopodobnie wszystkie skrypty nie działają tak jak potrzeba, ilość spacji jest różna od 1 do 8 i mam problem jak pozostawić tylko 1. Przez trim usunę tylko początek i koniec a co w środku.
jeżeli ktoś ma jeszcze jakieś ciekawe propozycje będę wdzięczny.
crash
Chrom: nie kłam, moje rozwiązanie i rozwiązanie dtb usuwa każdą ilość spacji zamieniając je na jedną.
Chrom
czyli ja mieszam ale może całość skryptu mam posypane
  1. <?
  2. // podłączamy plik conect.txt
  3. require "txt/conect.txt";
  4. // wywołujemy funkcję connection()
  5. connection();
  6. $table_name = "budynki";
  7.  
  8. // $plikuzytkownika - miejsce tymczasowej lokalizacji pliku na serwerze WWW
  9. $plikuzytkownika = $HTTP_POST_FILES['plikuzytkownika']['tmp_name'];
  10.  
  11. // $plikuzytkownika_name - nazwa pliku w systemie użytkownika
  12. $plikuzytkownika_name = $HTTP_POST_FILES['plikuzytkownika']['name'];
  13.  
  14. // $plikuzytkownika_size - wielkość pliku w bajtach
  15. $plikuzytkownika_size = $HTTP_POST_FILES['plikuzytkownika']['size'];
  16.  
  17. // $plikuzytkownika_type - typ pliku w systemie MIME, np. image/gif
  18. $plikuzytkownika_type = $HTTP_POST_FILES['plikuzytkownika']['type'];
  19.  
  20. // $plikuzytkownika_error - kod błędu związanego z wysyłaniem pliku
  21. $plikuzytkownika_error = $HTTP_POST_FILES['plikuzytkownika']['error'];
  22.  
  23. // plikuzytkownika_error został dodany do php 4.2.0
  24. // ten kod można stosować z nowszymi wersjami
  25. if ($plikuzytkownika_error > 0)
  26. {
  27. echo 'Wystąpił problem: ';
  28. switch ($plikuzytkownika_error)
  29. {
  30. case 1: echo 'Rozmiar pliku przekroczył wartość upload_max_filesize'; break;
  31. case 2: echo 'Rozmiar pliku przekroczył wartość max_file_size'; break;
  32. case 3: echo 'Plik wysłany tylko częściowo'; break;
  33. case 4: echo 'Nie wysłano żadnego pliku'; break;
  34. }
  35. }
  36.  
  37.  
  38. // umieszczenie pliku w zadanej lokalizacji
  39. $lokalizacja = 'raporty/'.$plikuzytkownika_name;
  40.  
  41. if (is_uploaded_file($plikuzytkownika)) 
  42. {
  43.  if (!move_uploaded_file($plikuzytkownika, $lokalizacja))
  44.  {
  45. echo 'Problem: Plik nie może być skopiowany do katalogu';
  46.  }
  47. } 
  48. else 
  49. {
  50. echo 'Problem: możliwy atak podczas wysyłania pliku. Nazwa pliku: '.$plikuzytkownika_name;
  51. }
  52. echo "<h2>Szczególy uploadu raportu</h2>";
  53. $pocieta_nazwa = "$plikuzytkownika_name";
  54. list($nazwa_pliku, $rozszezenie) = explode(".", $pocieta_nazwa);
  55. $data = "$nazwa_pliku";
  56. list($rap, $m, $miesioc_rok, $rap_budynek, $rap_wezel) = explode("_", $data);
  57. $rap_bud = $rap_budynek;
  58. if ($rap_budynek == Bluszczańska74){$rap_budynek = "Bluszczanska74";}
  59. elseif ($rap_budynek == Bluszczańska76){ $rap_budynek = "Bluszczanska76";}
  60.  
  61. $file = explode("2", $miesioc_rok);
  62. $rok = $file[1];
  63. $mies = $file[0];
  64. $rok = "2$rok";
  65. if ($mies == l){ $miesiac = "styczeń";}
  66. elseif ($mies == ll){ $miesiac = "luty";}
  67. elseif ($mies == lll){ $miesiac = "marzec";}
  68. elseif ($mies == lV){ $miesiac = "kwiecień";}
  69. elseif ($mies == V){ $miesiac = "maj";}
  70. elseif ($mies == Vl){ $miesiac = "czerwiec";}
  71. elseif ($mies == Vll){ $miesiac = "lipiec";}
  72. elseif ($mies == Vlll){ $miesiac = "sierpień";}
  73. elseif ($mies == lX){ $miesiac = "wrzesień";}
  74. elseif ($mies == X){ $miesiac = październik;}
  75. elseif ($mies == Xl){ $miesiac = listopad;}
  76. elseif ($mies == Xll){ $miesiac = grudzień;}
  77.  
  78. $sql = ("SELECT * FROM $table_name WHERE budynek ='$rap_budynek' and wezel ='$rap_wezel'") or die("Blad w zapytaniu!");
  79. $result = @mysql_query($sql) or die("brak rezultatów zapytania w bazie danych.");
  80. while ($wiersz = mysql_fetch_array($result)) {
  81. $wiersz_nag=$wiersz['wiersze_naglowka'];
  82. $ilosc_mieszkan=$wiersz['ilosc_mieszkan'];
  83. }
  84. $koniec_pliku = $wiersze_stop + 15;
  85. echo '<table cellpadding="8" border="1"><tr><td >Pełna nazwa pliku raportu</td><td>'."$plikuzytkownika_name".'</td></tr>
  86. <tr><td >Ścieżka do pliku tymczasowego</td><td>'."$plikuzytkownika".'</td></tr>
  87. <tr><td>Wielkość pliku raportu</td><td>'."$plikuzytkownika_size".'</td></tr>
  88. <tr><td>Raportowany budynek</td><td>'."$rap_bud".'</td></tr>
  89. <tr><td>Raportowany węzeł </td><td>'."$rap_wezel".'</td></tr>
  90. <tr><td>Miesiąc  rok </td><td>'."$miesiac  $rok".' rok</td></tr>
  91. <tr><td>Ilość rekordów (mieszkań) </td><td>'."$ilosc_mieszkan".'</td></tr></table>';
  92. ?>
  93. <p style="font-size: 14px; font-style: normal; text-align: left;"> Jeżeli plik został poprawnie załadowany na serwer:<br>
  94. <ul><li>Sprawdź czy zgadza się nazwa pliku raportu nad którym obecnie pracujesz,</li>
  95. <li>Sprawdź czy został wykryty prawidłowy wiersz od którego zaczynają się dane li
    czbowe, </li>
  96. <li>Sprawdź czy właściwie został wybrany budynek i ewentualnie węzeł którego doty
    czy raport</li>
  97. <li>Poniżej wyświetlona została zawartość przesłanego raportu, można sprawdzić je
    go treść.</li>
  98. </ul>
  99. </p>
  100. <!-- 
  101. <form action="index.php?go=aktualbud&sort=<? echo "$budynek_id"; ?>" method="post" ENCTYPE="multipart/form-data" >
  102. <input type="text" name="plik" value="<? echo "$plikuzytkownika_name" ?>" size="15">
  103. <input type="submit" value="Wyślij">
  104. </form>
  105.  --> 
  106. <hr>
  107. <?
  108.  $tekst = file('raporty/'.$plikuzytkownika_name);
  109.  array_splice($tekst, 0, $wiersz_nag); //usuwam wiersze na początku
  110.  array_splice($tekst, $ilosc_mieszkan, $koniec_pliku); //usuwam wiersze na koncu
  111.  $tekst = preg_replace( '/ +/', ' ', $tekst );
  112.  $go = $tekst;
  113.  
  114. foreach ($tekst as $linia) {
  115. echo "$linia <br />";
  116. } 
  117.  
  118.  $wp = fopen("$lokalizacja", 'w');
  119. fwrite($wp, $linia);
  120. fclose($wp);
  121.  
  122.  ?>


ale pokręciłem z zapisem pliku i zapisuje tylko ostatnią linię.
mea culpa

--- edit:
Ile można prosić? http://forum.php.pl/index.php?showtopic=39711&hl= Popraw!
~crash
crash

  1. <?php
  2. fwrite( $wp, implode( '', $tekst ) );
  3. ?>
Chrom
Duże podziękowania.

sprawdziłem wszystko chodzi jeseś super.
teraz wygląda tak:
Cytat
1 0001.079 0000.886 0000.055 0000.875
2 0008.176 0006.997 0001.019 0001.538
3 0003.552 0005.426 0000.000 0001.056
4 0001.764 0002.884 0000.222 0001.873
5 0001.132 0001.071 0000.209 0000.408
6 0001.031 0000.467 0000.033 0000.720
7 0001.416 0000.799 0000.033 0000.002
8 0006.054 0003.224 0000.000 0001.283
9 0001.105 0000.906 0000.000 0001.637
10 0000.645 0000.103 0000.000 0000.415
11 0000.199 0000.136 0000.000 0000.397
12 0003.771 0003.778 0000.975 0000.117
13 0000.000 0003.764 0000.000 0001.484
14 0004.913 0002.955 0000.083 0001.543


W tej chwili mam jescze jedno pytanko czy wiesz jak załadować kolejne dane do odpowiednich komórek tabeli MySQL-a
crash
1. Ponawiam prośbę o poprawienie tagów BBCode w Twoim przedostatnim poście!
2. Manual MySQL -> LOAD DATA INFILE lub odpowiedno napisany skrypcik php.
Chrom
Dzieki,
nie zrozoumiałem tak od razu, już poprawione
Studiuję

  1. LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt'
  2. [REPLACE | IGNORE]
  3.  
  4. INTO TABLE tbl_name
  5. [FIELDS
  6. [TERMINATED BY 'string']
  7. [[OPTIONALLY] ENCLOSED BY 'char']
  8. [ESCAPED BY 'char' ]
  9. ]
  10. [LINES
  11. [STARTING BY 'string']
  12. [TERMINATED BY 'string']
  13. ]
  14. [IGNORE number LINES]
  15. [(col_name,...)]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.