Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Usuwanie krzaczków
Forum PHP.pl > Forum > PHP
MaciekDZN
Witam

strona wyświetla questionmark.gif?

"Video
ID � � � � � � � � � � � � � � � � � � � : 0
chuuuj ������������������� : 0
Format � � � � � � � � � � � � � � � � � : MPEG-4 Visual...."

żadnym str_replace - nie da sie

(dodałem skopiowany plik do bazy i z bazy wybieram go i szukam i nie znajduje podobnieństwa)

dodam też że to nie może być coś prostego gdyż może mi usunąć znaki z wyrazów w których były polskie znaki np. chrząszcz wygląda jak chrz�szcz więc nie może usuwać z wyrazów...
rad11
Zacząłbym od tego :

Temat: MYSQL Polskie znaki

a skończył na google`u i potem tutaj przyszedł czy tak uczyniłeś? smile.gif
MaciekDZN
niee nieee

google od wczoraj daje mi te same wyniki - w ascii przeskanowalem z pare krzaczków czy kodowaniem są jednakowe ale nic nie zmieniło (nie wykrywa podobnieństwa)

np. krzaczek w ascii jest na pozycji 0 i na 65533 jak i na 55624 ....

kodowanie to nic co by mi pomogło, potrzebuje tylko skryptu, który wywali mi te krzory

powiedzmy ze skopiowałem coś co było już zakrzaczone
Pyton_000
Zrób sobie

  1. $string = preg_replace('/([�] ?)*/', '', $string);


PS. Na Krzaki - STIHL haha.gif
MaciekDZN
tylko tyle że jak wklejam to do PWPEditor to mi zamienia na normalny '?'

jak zedytowales to Tobie tez zamienilo wink.gif f*ck ;d
Pyton_000
Skopiuj teraz, bo wcześniej po szybkiej edycji mi zamieniło na zwykły ?
MaciekDZN
PHP Web Page Editor - "?"
Notepad ++ - "kwadracik"
Notatnik - � ohmy.gif

ale nadal jest:

Pyton_000
pokaż kod, plik zapisany w UTF8 ?
Tomplus
Po pierwsze... skąd czerpiesz dane?

Z bazy MySQL czy z tablicy lub płaskiej bazy?
Jakie kodowanie było wcześniej, bo może źle przekonwertowałeś dane.
MaciekDZN
wszystko z kodowaniem bazy danych, plików PHP jak i samego ustawionego kodowania w nich (charset) jest poprawne.

dane które skopiowałem miały już krzaczki (ktoś po prostu zjebał)

jest ich tak dużo (są też poprawne całe szczęście), że muszę użyć do tego jakiejś funkcji by nie robić tego ręcznie no i właśnie...

czego użyć by się tego pozbyć?


Dane widziane są pobierany z mysql z kodowaniem utf-8
plik php który wykonuje skrypt ma zaimplementowane pobieranie z bazy w utf-8 jak i charset w mecie utf-8
oczywiście również plik php również jest zapisany z kodowaniem utf-8

  1. <?php
  2. include("config.php");
  3. //freetorki
  4. //by MaciekDZN - Alkomat - Gazowiusz
  5. ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  6. <html xmlns="http://www.w3.org/1999/xhtml">
  7. <head>
  8. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  9. <meta http-equiv="content-language" content="pl">
  10. </head>
  11. <body><?
  12.  
  13. $max = 152461;
  14. $id_torrsa=$_GET['id_torrsa'];
  15. $nazwa = array();
  16. $ID = array();
  17.  
  18. $torki = mysql_query("SELECT * FROM t_baza WHERE id='$id_torrsa'");
  19. while($t = mysql_fetch_array($torki)){
  20. $opis = $t['opis'];
  21.  
  22. //do usuniecia
  23. $co_to = mysql_query("SELECT * FROM do_usuniecia");
  24. while($co = mysql_fetch_array($co_to)){
  25. $opis = str_replace("<br /><br />","<br />",$opis);
  26.  
  27. $znak = $co['znak']; // tutaj jest ten znak "?"
  28. $znak2 = $znak." ".$znak." ";
  29. $opis = str_replace($znak2,"",$opis);
  30. $znak3 = " ".$znak."".$znak." ";
  31. $opis = str_replace($znak3,"",$opis);
  32. $opis = str_replace($znak,"",$opis);
  33. $opis = str_replace("? ? ","",$opis);
  34. $opis = str_replace("�",'',$opis); // znak "?" z roznych pozycji ascii
  35. $opis = str_replace("�","",$opis); // znak "?" z roznych pozycji ascii
  36.  
  37. $opis = preg_replace('/([?] ?)*/', '', $opis);
  38. echo "�<br />� �<br />";
  39. //mysql_query("UPDATE t_baza SET opis='$opis' WHERE id='$id_torrsa'");
  40. echo "$znak || $znak2 || $znak3<hr />$opis<br />";
  41. }
  42. }



ad.1.
Wymyśliłem aby podmienić polskie znaki na bez ogonków, zapamiętać ich pozycję a później gdy oczyścić tekst przez wyrażenie regularne znów przywrócić ogonki?
Pyton_000
w preg_replace [?] "?" musi być tym znaczkiem.
MaciekDZN
próbowałem na wszelkie sposoby, może ten znak jest jakimś szczególnym?
viking
Co prawda w tym wypadku i tak nie pomoże ale nie widzę nigdzie ani nagłowka ani set names. Z dowolnym kodowaniem może się to wczytywać. Znormalizuj najpierw to a później poprawiaj dalej.
MaciekDZN
w config.php

  1. mysql_query('SET CHARACTER_SET utf8_unicode_ci');


screeny z bazy:






Połowa rekordów ładuje się normalnie gdyż były poprawnie kodowane przed skopiowaniem i nie posiadały krzaczków (są polskie znaki...):


nawet przy użyciu http://php.net/manual/en/function.htmlspecialchars.php zmienia wszystko prócz tych krzaków :///////// HELP
viking
Jak ustawisz inne kodowanie niż utf-8 (eksperymentuj, latin1,2) powinny się wyświetlić krzaczory właściwe, co da już podstawy do konwersji na poprawne znaki.
MaciekDZN
dzięki za wszelaką pomoc smile.gif

udało mi się:
  1. $opis = htmlentities($opis); //przeksztalca krzaczki
  2. $opis = nl2br($opis);
  3. $opis = str_replace("
  4. ",'',$opis);
  5. $opis = str_replace(" &nbsp;",'',$opis); //usuwa krzaczki ktore okazaly sie tym kodem
  6. $opis = str_replace("&lt;br /&gt;&lt;br /&gt;",'',$opis);
  7. $opis = str_replace("<br />",'',$opis);
  8.  
  9. }
  10. $opis = html_entity_decode($opis); //zamienia z powrotem na html
  11. echo $opis;
Headamon
A czy aktualizacja wersji php może spowodować takie krzaczki? Miałem stronę postawioną na serwerze, wszystko było w porządku, wczoraj patrzę, a wszędzie zamiast polskich znaków krzaki. Tak jak pisałem - nic nie ruszałem.
Tomplus
@Headamon
Nie wydaje mi się. Parser nie ingeruje w kodowanie plików. Raczej możesz mieć wymuszone domyślne kodowanie, więc wystarczy ustawić poprzednie domyślne (powinny być w opcjach serwera albo przez ini_set).
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.