Autor Zpráva
Petr Šebeček
Profil *
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
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 *
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
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 *
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
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"
Petr Šebeček
Profil *
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...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: