Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Dziwne kodowanie, preg_match() nie działa, Plik txt z linuxa po odczytaniu fgets($plik) dostaję krzaki
Compiler
post
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 2
Dołączył: 11.11.2006

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


Witam,

Mam problem ponieważ posiadam plik txt o dziwnym kodowaniu. Chyba z Linuxa. Oczywiście mogę go odczytać, ale miejscami są znaki typu : # ¨£ .
Problem jest taki, że wyszukuję wzorca w tym pliku funkcją:
  1. preg_match('/[0-9]{2}-[0-9]{3}/', $linia, $wyniki)


I nie znajduje mi kodu pocztowego.Wyświetlając linie z kodem w przeglądarce dostaję:
5�2�-�1�6�2� �

Czy ktoś wie co zrobić, żeby to działało?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
altruista2
post
Post #2





Grupa: Zarejestrowani
Postów: 127
Pomógł: 32
Dołączył: 8.02.2010

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


W takim razie po prostu zamień to na:
  1. str_replace('?','',preg_match('/[0-9]{2}-[0-9]{3}/', $linia, $wyniki))


- z tym że wypadałoby ten znaczek "?" podawać jako chr

a jeśli występują inne znaczki niż ten jeden to zrób tak:
  1. function wyczysc($str) {
  2. $alfabet = '0123456789-';
  3. $ret = '';
  4. $max = strlen($str);
  5. for($i=0;$i<$max;$i++) {
  6. $ch = substr($str,$i,1);
  7. if(strpos($alfabet, $ch) !== false) $ret .= $ch;
  8. }
  9. return $ret;
  10. }
  11.  
  12. wyczysc(preg_match('/[0-9]{2}-[0-9]{3}/', $linia, $wyniki));


Ten post edytował altruista2 10.02.2010, 18:32:53


--------------------
Jeśli Ci pomogłem kliknij pomógł. W ten sposób temat zaświeci się na żółto i użytkownicy którzy pomagają nie będą musieli niepotrzebnie klikać. Dziękuję.

"Pomaganie"
Go to the top of the page
+Quote Post
neverever
post
Post #3





Grupa: Zarejestrowani
Postów: 278
Pomógł: 44
Dołączył: 17.02.2004
Skąd: Wieliczka

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


może http://php.net/manual/pl/function.mb-detect-encoding.php
+
http://www.php.net/manual/pl/function.mb-c...rt-encoding.php

ew.
http://www.php.net/manual/pl/function.iconv.php

?


--------------------
neverever
Go to the top of the page
+Quote Post
Compiler
post
Post #4





Grupa: Zarejestrowani
Postów: 36
Pomógł: 2
Dołączył: 11.11.2006

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


Niestety nic to nie daje. Dziwne ;/ edit: a jaki to char - ? questionmark.gif smile.gif
Jakby ktoś chciał podejrzeć plik to - http://www.przeklej.pl/plik/fdssd-rar-0009gr0815a5
Mam jeszcze pytanie odnośnie rename() dostaję Permission denied.
Dodam iż robię to w windowsie na xampp i nie mam ustawionych atrybutów tylko do odczytu.

Ten post edytował Compiler 10.02.2010, 19:32:54
Go to the top of the page
+Quote Post
altruista2
post
Post #5





Grupa: Zarejestrowani
Postów: 127
Pomógł: 32
Dołączył: 8.02.2010

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


Użyj tej funkcji do wyczyszcenia:
  1. function wyczysc($str) {
  2. $alfabet = '0123456789-abcdefghijklmnoprstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZqąęćłńśóżźĄĘĆŁŃŚÓŻŹ -=[];,.<>:"{}1234567890!@#$%^&*()';
  3. $max = strlen($str);
  4. for($i=0;$i<$max;$i++) {
  5. $ch = substr($str,$i,1);
  6. if(strpos($alfabet, $ch) !== false) $ret .= $ch;
  7. }
  8. return $ret;
  9. }


A potem będzie z górki smile.gif)


--------------------
Jeśli Ci pomogłem kliknij pomógł. W ten sposób temat zaświeci się na żółto i użytkownicy którzy pomagają nie będą musieli niepotrzebnie klikać. Dziękuję.

"Pomaganie"
Go to the top of the page
+Quote Post
Compiler
post
Post #6





Grupa: Zarejestrowani
Postów: 36
Pomógł: 2
Dołączył: 11.11.2006

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


Dzięki działa exclamation.gif smile.gif
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: 19.08.2025 - 09:22