Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]str_replace a utf-8, Problem z zamianą
roobik
post 4.12.2015, 11:42:25
Post #1





Grupa: Zarejestrowani
Postów: 407
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław / Szczytna

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


Witam.
Mam coś takiego:
  1. ...
  2. $Wyniki[0][0] = str_replace('Przewozy Regionalne', '<img src="pr.png">', $Wyniki[0][0]);
  3. $Wyniki[0][0] = str_replace('Koleje Dolnośląskie', '<img src="kd.png">', $Wyniki[0][0]);
  4. ...

Jeśli chodzi o "Przewozy Regionalne" - jest OK.
Problem z "KD" - domyślam się, że tu jest problem z polskimi znakami. Jak to obejść?

Z góry dziękuję!

//edit
1) zmiany w php.ini nie wchodzą w grę
2)
  1. $Wyniki[0][0] = strtr($Wyniki[0][0], array('Ż'=>'Z','ż'=>'z','Ź'=>'Z','ź'=>'z','Ó'=>'O','ó'=>'o','Ł'=>'L','ł'=>'l','Ń'=>'N','ń'=>'n','Ą'=>'A','ą'=>'a','Ę'=>'E','ę'=>'e','Ć'=>'C','ć'=>'c','Ś'=>'S','ś'=>'s'));

powyższe tez nie wchodzi w grę - bo sypie mi się cała reszta strony sad.gif

Ten post edytował roobik 4.12.2015, 11:58:57
Go to the top of the page
+Quote Post
Daimos
post 4.12.2015, 11:56:42
Post #2





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

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


Musisz sprawdzić w jakim kodowaniu jest tekst, który zamieniasz i albo przekonwertować, albu użyć tego samego. Polskie znaki potrafią być czasami zapisane w formie encji, np. ą.
Bez źródła Ci nic nie pomożemy


--------------------
scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
Go to the top of the page
+Quote Post
roobik
post 4.12.2015, 12:04:04
Post #3





Grupa: Zarejestrowani
Postów: 407
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław / Szczytna

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


http://infopasazer.intercity.pl/?p=station&id=60103
To jest źródłowa strona

Poprzerabiałem to "po swojemu", wyszła mi ładna tablica, ale własnie jest problem z utf-8...
Go to the top of the page
+Quote Post
Daimos
post 4.12.2015, 12:27:51
Post #4





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

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


Więc sam nie tworzysz dokumentu w kodowaniu utf8
  1. <?php
  2. $string = "http://infopasazer.intercity.pl/?p=station&id=60103";
  3. $string = file_get_contents($string);
  4. $string = str_replace("Koleje Dolnośląskie", "zamienione", $string);
  5. echo $string;
  6. ?>

Testowałem na http://phpfiddle.org/ i działa. W czym tworzysz kod, jak ustawiasz kodowanie Twojego skryptu?
A skoro przerabiasz po swojemu, to naucz się sprawdzać błędy i problemy krok po kroku. Najpierw zrób zamianę i zobacz czy działa, a później bierz się za przerabianie po swojemu, bo być może zamieniłeś tagi i znaki na encje za pomocą htmlentities, lub czymś podobnym i dlatego str_replace nie działa

Ten post edytował Daimos 4.12.2015, 12:29:23


--------------------
scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
Go to the top of the page
+Quote Post
roobik
post 4.12.2015, 12:43:24
Post #5





Grupa: Zarejestrowani
Postów: 407
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław / Szczytna

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


Twój kod działa, ale tylko na phpfiddle.org
Ja go nieco przerobiłem i się posypało
  1. $Wyniki[0][0] = $_SERVER['PHP_SELF'];
  2. $Wyniki[0][0]= file_get_contents($Wyniki[0][0]);
  3. $Wyniki[0][0] = str_replace("Koleje Dolnośląskie", "zamienione", $Wyniki[0][0]);


mi wysypuje błąd:
Cytat
Warning: file_get_contents(/index2.php) [function.file-get-contents]: failed to open stream: No such file or directory

plik oczywiście jest

Robię w programie PsPAD. Kodowanie mam ustawione na ISO8859-2
Mogę i jednocześnie nie mogę zmienić kodowania pliku:
mogę - bo to żaden problem
nie mogę - sypie się cała reszta
Go to the top of the page
+Quote Post
viking
post 4.12.2015, 12:50:28
Post #6





Grupa: Zarejestrowani
Postów: 6 366
Pomógł: 1115
Dołączył: 30.08.2006

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


Więc masz całą resztę źle. Strona źródłowa jest w unicode, i ty też w tym kodowaniu powinieneś pisać a nie archaiczne iso-8859-2.


--------------------
Go to the top of the page
+Quote Post
Daimos
post 4.12.2015, 12:52:51
Post #7





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

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


Cytat(roobik @ 4.12.2015, 12:43:24 ) *
Twój kod działa, ale tylko na phpfiddle.org
Ja go nieco przerobiłem i się posypało
  1. $Wyniki[0][0] = $_SERVER['PHP_SELF'];
  2. $Wyniki[0][0]= file_get_contents($Wyniki[0][0]);
  3. $Wyniki[0][0] = str_replace("Koleje Dolnośląskie", "zamienione", $Wyniki[0][0]);


mi wysypuje błąd:

plik oczywiście jest

Robię w programie PsPAD. Kodowanie mam ustawione na ISO8859-2
Mogę i jednocześnie nie mogę zmienić kodowania pliku:
mogę - bo to żaden problem
nie mogę - sypie się cała reszta

Odpuść sobie iso, albo poczytaj o konwertowaniu tekstów z różnych kodowań. Błąd zwraca jasny komunikat prawda? Nie ma takiego pliku, czyli co? Czyli zła ścieżka


--------------------
scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
Go to the top of the page
+Quote Post
roobik
post 4.12.2015, 13:03:22
Post #8





Grupa: Zarejestrowani
Postów: 407
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław / Szczytna

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


viking
przestawiłem kodowanie na UTF-8

Daimos
zrobiłem mały myk z kodowaniem - oczywiście zwracam honor

i...
DZIAŁA smile.gif

(tylko komu dać "Pomógł" questionmark.gif wink.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 Wersja Lo-Fi Aktualny czas: 10.06.2024 - 18:00