Autor Zpráva
logic
Profil *
Ahoj.
Když chci změnit string s diakritikou v kódování 1250, jaký kód musím zapsat místo UTF-8?
mb_internal_encoding("UTF-8");

A když chci použít
mb_ereg_replace ( string $pattern , string $replacement , string $string)
musím provést nejdříve preg_quote($pattern)?


Ještě jedna otázka. Nevíte v jakém kódovaní se načítají soubory ve Windows? Například slovo "Třebíč" se zobrazuje jako "T�eb��". Jak tedy převést toto slovo, abych ho mohl zapsat do souboru v kodovani windows 1250?
Alphard
Profil
ereg_* rodina se bude rušit, té se vyhněte. Použijte preg_replace a modifikátor u.
Nejčastější potíže s PHP (FAQ) » Regulární výrazy

Práci se soubory ve cp1250 bych se snažil vyhnout, nejlépe asi přečíst, překódovat do utf a nechat v něm.
logic
Profil *
No ale v kterém kódování je název souboru? Win1250 to není protože soubor je v 1250 a zobrazuje se mi diakritika správně. Kdežto název souboru se zobrazuje špatně. Je to tedy UTF-8? A jak převést UTF-8 (název souboru) na cp1250?
Alphard
Profil
Pro převádění je funkce iconv().
logic
Profil *
Dobře už to používám, ale
iconv ( "UTF-8", "cp1250", $file);
dostávám chybu

Notice: iconv() [function.iconv]: Detected an illegal character in input string in ...

Měl bych vyescapovat některé znaky?
Alphard
Profil
Ve FAQ je mj. u odesílání mailů uvedena funkce autoUTF(), zkuste je použít.
Šéva
Profil *
Ahoj
iconv ( "UTF-8", "windows-1250", $file);
tady v tom bude asi chyba :)
logic
Profil *
Díky oběma. Zabralo AutoUtf a příkaz
iconv('ISO-8859-2', 'UTF-8', $s);
To mě docela překvapilo, že název souboru je v latin-2. Je pro to nějaké vysvětlení?
Davex
Profil
logic:
To mě docela překvapilo, že název souboru je v latin-2. Je pro to nějaké vysvětlení?
Kódování Windows 1250 se liší od ISO 8859-2 v umístění třech znaků - š, ť a ž. Pokud je jméno souboru neobsahuje, tak se detekuje ISO 8859-2.
logic
Profil *
Celé jsem to domotal. Výstupní dokument je v UTF-8 a ne v cp-1250. Tak nakonec je správně toto:

  $file_conv = iconv('WINDOWS-1250', 'UTF-8', $file);

Měl jsem problém se zobrazováním š a ž.
logic
Profil *
Celou dobu jsem si myslel že str_replace mi funguje. No a když použiju ten preg_replace:

  preg_replace("/".preg_quote($original_line)."/u","    ".preg_quote($newline),$contents);

Dostávám chybu:Unknown modifier 'c'

Může mi někdo vysvětlit co dělám špatně?
logic
Profil *
Jednu chybu jsem už odstranil, ale stále mi to zkracuje text:
$contents = preg_replace("*".preg_quote($original_line)."*u","                ".$newline,$contents);
Tedy před replace je $contents celý soubor. Kdežto po provede příkazu je celý soubor od konce zkrácený. Schází tam nějaké data. Dávám ten modifikátor na správné místo nebo kde dělám chybu?
logic
Profil *
Tak jsem zjistil, že

 $contents = preg_replace("@".preg_quote($original_line)."@su","                ".$newline,$contents);
Nepomáhá.

Ale
$contents = mb_ereg_replace("@".preg_quote($original_line)."@","                ".$newline,$contents,"m");
Funguje bezchybně.

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: