Autor Zpráva
notwist
Profil
Zdravím,

prosím o radu.

Exportuji data v PHP do Excelu a potřeboval bych občas odřádkovat, ale v rámci jedné buňky. V originálním textu v databázi mám <br>, ale to jen zapíše a nic to neudělá. Proto bych zaměnil <br> za nějaký znak, ale nevím za jaký.

Můj kousek kódu:
$fp=FOpen("$tmpfname","w");
            for ($p = 0; $p < count($nadpisy); ++$p){
                FPutS($fp,$nadpisy[$p] . "\t");
            }
            FPutS($fp,"\n");
            foreach ($pole as $radek_pole => $hodnoty)
            {
                $p=0;
                foreach ($hodnoty as $hodnota_pole)
                {
                FPutS($fp,str_replace("<br>", NĚČÍM_NAHRADIT, $hodnota_pole) . "\t");
                $p++;
                }
                FPutS($fp,"\n");
            }
            Fclose($fp);

Děkuji za radu.
juriad
Profil
Ten formát, který používáš je CSV s tabulátorovými oddělovači. V CSV je zvykem textové položky ohraničit uvozovkami (a uvozovky uvnitř uescapovat), pak můžeš použít uvnitř textu obyčejné odřádkování pomocí \n.

Podívej se na funkci fputcsv, která dělá skoro vše za tebe.
juriad
Profil
$fp = fopen($tmpfname, "w");
fputcsv($fp, $nadpisy, "\t");
foreach ($pole as $hodnoty) {
  fputcsv($fp, str_replace("<br>", "\n", $hodnoty), "\t");
}
fclose($fp);
notwist
Profil
juriad:
Děkuji. Zkusil jsem to a soubor se vytvoří, ale je prázdný. Dělám ještě něco špatně?

$fp=FOpen("$tmpfname","w");
            for ($p = 0; $p < count($nadpisy); ++$p){
                fputcsv($fp,$nadpisy[$p] . "\t");
            }

            foreach ($pole as $radek_pole => $hodnoty)
            {
                $p=0;
                foreach ($hodnoty as $hodnota_pole)
                {
                fputcsv($fp,str_replace("<br>","\n",$hodnota_pole) . "\t");
                $p++;
                }

            }
            Fclose($fp);
juriad
Profil
notwist:
Dal jsem ti celý kód, nemusíš jej nijak upravovat. Ve skutečnosti jsi to tedy celé pokazil.
fputcsv zpracuje celý řádek, nikoli jednu buňku.
notwist
Profil
juriad:
Aha :-) Tak teď je to OK :-). Díky...

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: