<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>&#60;?blog &#187; csv</title>
	<atom:link href="http://blog.visionsoftware.pl/tag/csv/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.visionsoftware.pl</link>
	<description>...nie tylko o programowaniu</description>
	<lastBuildDate>Sun, 23 Mar 2014 19:23:43 +0000</lastBuildDate>
	<language>pl-PL</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>fputcsv() w PHP a programy Windowsowe</title>
		<link>http://blog.visionsoftware.pl/programowanie-php/fputcsv-w-php-a-programy-windowsowe.html</link>
		<comments>http://blog.visionsoftware.pl/programowanie-php/fputcsv-w-php-a-programy-windowsowe.html#comments</comments>
		<pubDate>Mon, 13 Dec 2010 22:27:49 +0000</pubDate>
		<dc:creator><![CDATA[Marcin Fliszta]]></dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[csv]]></category>
		<category><![CDATA[fputcsv]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://blog.visionsoftware.pl/?p=79</guid>
		<description><![CDATA[PHP od wersji 5.1.0 udostępnia dodatkowe funkcje pomagające w pracy z plikami CSV. Do odczytywania zawartych w nich danych możemy posłużyć się fgetcsv(), pliki możemy tworzyć przy użyciu fputcsv(). W przypadku późniejszego importy takich danych w niektórych programach windowsowych możemy jednak napotkać na niespodziewany problem. Zapis pliku przy użyciu fputcsv()jest bardzo prosty. Należy najpierw plik otworzyć, a następnie linia po linii zapisać. Pokazano to na poniższym przykładzie: Plik po zapisaniu jest całkowicie poprawny, jednak w [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>PHP od wersji 5.1.0 udostępnia dodatkowe funkcje pomagające w pracy z plikami CSV. Do odczytywania zawartych w nich danych możemy posłużyć się fgetcsv(), pliki możemy tworzyć przy użyciu fputcsv(). W przypadku późniejszego importy takich danych w niektórych programach windowsowych możemy jednak napotkać na niespodziewany problem.<span id="more-79"></span><br />
Zapis pliku przy użyciu fputcsv()jest bardzo prosty. Należy najpierw plik otworzyć, a następnie linia po linii zapisać. Pokazano to na poniższym przykładzie:</p>
<pre class="brush: php; title: ; notranslate">

&lt;?php
$data = array (
 array('aaa', 'bbb', '111'),
 array('ccc', 'ddd', '222'),
 array('eee', 'fff', '333'),
);

$fp = fopen('data.csv', 'w');

foreach ($data as $row) {
 fputcsv($fp, $row, ';');
}

fclose($fp);
?&gt;

</pre>
<p>Plik po zapisaniu jest całkowicie poprawny, jednak w przypadku importu do niektórych programów Windowsowych, możemy napotkać nieoczekiwany błąd. Wczytanie pliku może być niemożliwe, problem stanowią tu znaki końca linii. W przypadku PHP, linie kończone są „po linuksowemu”, czyli za pomocą „\n”. Tymczasem programy pod Windows oczekują swojego formatu, czyli „\r\n”.</p>
<p>Istnieje proste rozwiązanie tego problemu w postaci… rezygnacji z funkcji fputcsv(). Jak podaje dokumentacja można co prawda skorzystać ze zmiany w konfiguracji parametru mkonfiguracyjnego auto_detect_line_endings, jednak nie zawsze mamy do niego dostęp.</p>
<p>Zamiast fputcsv() wystarczy więc użyć zwykłej funkcji fwrite() samodzielnie określając w zapisywanym ciągu znak końca linii. Zmieniony kod może wyglądać następująco:</p>
<pre class="brush: php; title: ; notranslate">

&lt;?php
$data = array (
 array('aaa', 'bbb', '111'),
 array('ccc', 'ddd', '222'),
 array('eee', 'fff', '333'),
);

$fp = fopen('data2.csv', 'w');

foreach ($data as $row) {
 fwrite($fp, &quot;{$row[0]};{$row[1]};{$row[0]}\r\n&quot;);
}

fclose($fp);
?&gt;
</pre>
<p>Można także skorzystać z gotowej, bezpiecznej odmiany funkcji fputcsv(), umieszczonej w <a href="http://www.php.net/manual/en/function.fputcsv.php#90883" target="_blank">komentarzach do dokumentacji</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.visionsoftware.pl/programowanie-php/fputcsv-w-php-a-programy-windowsowe.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
