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
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
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: 4.10.2025 - 18:36