Autor | Zpráva | ||
---|---|---|---|
Petr Šebeček Profil * |
#1 · Zasláno: 23. 1. 2010, 17:16:36
Dobrý den / ahoj,
v první řadě chválím tento server, opravdu velmi pomáhá... :-) Potýkám se s problémem nahrazování textu v dokumentu. Kód: $tmp = file_get_contents(dokument.rtf); $tmp = preg_replace($spatne,$dobre,$tmp); file_put_contents("novy_dokument.rtf", $tmp); kde $spatne a $dobre jsou array které nahrazují text v dokument.rtf, všechno funguje tak jak má, o tom žádná, akorát nahrazený text, ve kterém je diakritika vypadá jak čínský čaj... dokument.rtf, výše uvedený kód, i data které dostávám z mysql do array jsou (by měla být) v utf-8 zkoušel jsem nějaké ptákoviny s encode a decode, iconv nebo autoczech od dgx, ale pořád nic... Neví někdo o nějakém rychlém, elegantním řešení ? :) |
||
Majkl578 Profil |
#2 · Zasláno: 23. 1. 2010, 17:27:48 · Upravil/a: Majkl578
Nejsem si teď jistý, ale není ještě navíc třeba použít v regulárním výrazu modifikátor u pro UTF-8?
Pro MySQL je třeba nastavit i kódování spojení na UTF-8 pomocí dotazu: SET NAMES 'utf8' |
||
Petr Šebeček Profil * |
#3 · Zasláno: 23. 1. 2010, 18:11:06
mysql_query("SET character_set_client=utf-8"); mysql_query("SET character_set_connection=utf-8"); mysql_query("SET character_set_results=utf-8"); to mám ošetřené, v MySQL chyba není (v array jsem vyměnil proměnou za text "Žluťoučký kůň...") jak to myslíte s tím modifikátorem ? |
||
Majkl578 Profil |
#4 · Zasláno: 23. 1. 2010, 18:23:58
Zkuste si tento kód s u za ~ a bez:
$s = 'Žluťoučký kůň..'; var_dump(preg_replace('~[a-zčýů]+~u', '_', $s)); |
||
Petr Šebeček Profil * |
#5 · Zasláno: 23. 1. 2010, 22:43:59
Tak jsem to vyzkoušel a stále nic. Nějaké další nápady?
A ještě mám podobný problém s výpisem souborů ze složky... tam se zobrazuje � místo diakritiky. Určitě to má nějakou souvislost ;) |
||
Perry Profil |
#6 · Zasláno: 24. 1. 2010, 19:22:30
Možná blbá připomínka... máš ten soubor *.php uložený v UTF-8 ? A za druhé, má ta stránka nastavený Header na UTF-8, protože pokud ne, tak si prohlížeč občas dělá co chce a nahodí si automaticky win-1250, a pak to dělá "čaj"
|
||
Časová prodleva: 7 dní
|
|||
Petr Šebeček Profil * |
#7 · Zasláno: 1. 2. 2010, 01:29:55
Zdravím, omlouvám se za delší odmlčení - jestli teda někdo čekal na odezvu :)
Situace už je vyřešená, dle všeho mám vše v UTF..., ale stejně jsem musel použít iconv na "rozkodovani" win-1250. A už jsem si řekl, že to na MS stroji nebudu řešit. Za to je zde jiný, zcela nový problém, který následuje hned za tímto krokem :) Jedná se o to, že mám složku a v ní dokumenty v rtf, v dokumentech je např pole na adresu, akorát místo vyplnění města, psč tam mám ADRESA - to potom přes preg_replace ošetřuji - to už je zmíněno. Akorát, když celý dokument projedu a skript změní co potřebuji, tak to chci nějak dostat zase v uživateli. A to nejlépe formou stahovaného souboru. Zápasím s tím celkem dlouho, zkoušel jsem přes fci tempnam vygenerovat jedinečný název a a pomocí file_put_contents to uložit do tempu a hned následně, s modifikací hlaviček kýžený soubor otevřít. Akorát se mi vždy otevře stránka se uživatleským rozhraní mého webu, bez css... Pro představu: $spatne[] = '/DATUM/'; $dobre[] = date("d.m.Y"); $spatne[] = '/MANDANT/'; $dobre[] = iconv("utf-8","windows-1250",$mandant); . . . $tmp = file_get_contents(SLOZKA_DOPISU.$_POST['dopis']); $tmp = preg_replace($spatne,$dobre,$tmp); $cestaTempu = tempnam($_ENV["TEMP"], "rtf"); file_put_contents($cestaTempu, $tmp); header("Content-Description: File Transfer"); header("Content-Type: application/force-download"); header("Content-Disposition: attachment; filename=\"".$_POST['dopis']."\""); readfile($cestaTempu); můžu říct, že co jsem vždy potřeboval, tak jsem si za pár chvil udělal - a dokonce to stále funguje ;) akorát nervy jsou jen jedny, tak jsem se o to s Vámi chtěl podělit PS: pokud na to potřeba založit nový post, tak se omlouvám... |
||
Časová prodleva: 13 let
|
0