Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: fputcsv brak ' " '
Forum PHP.pl > Forum > PHP
buracky
Witajcie,
Stworzyłem tablicę, której teksty powinny być oddzielone średnikiem ';' a każdy tekst powinien być w cudzysłowiu " .

Z jakiegoś powodu działa prawidłowo rozdzielanie tekstu przez średnik, natomiast teksty tylko w niektórych przypadkach są w cudzysłowiach.
W cudzysłowiach są tylko teksty, które w polu bazy zapisane są jako dwa wyrazy np.: łódź kaliska . Te, które są jednoczłonowe nie mają wymaganych '"' .

Instrukcja końcowa
  1. foreach ($D as $key => $value) {
  2. fputcsv($output, $value, ';' , '"');
  3. }


Oczywiście wszystkie nagłówki zdefiniowane, wartości przenoszone są prawidłowo ale nie wpisuje ich w ' " '


Dziękuję za pomoc.
Pyton_000
Nie są objęte bo nie ma takiej potrzeby.
Musiałbyś sam przelecieć wszystkie kolumny i objąć je w " przy okazji wyłączając " dla fputcsv.
buracky
Tyle godzin spędziłem nad "dodaniem" ' " ' , że nie pomyślałem, żeby usunąć znaki ohno-smiley.gif

Dzięki wielkie ,
proste rozwiązanie a cieszy !

lukaskolista
Czekaj czekaj. Jakie znaki usunąłeś? Generalnie " jest domyślnym znakiem do esacpe'owania stringów. Jest uzywany tylko wtedy, kiedy php uzna, że jest taka konieczność, bo np. uzyłeś znaku specjalnego jak spacja. Brak "" dla stringów typu:
abcxyz
nie jest niczym złym, natomiast dla np.:
ggsgdr;gdrgdr fsergfser
jako jedna kolumna w pliku csv już musi występować.
buracky
Dopiero dzisiaj do tego siadłem.

Faktycznie nie ma możliwości wyłączenia ' " ' . Wywala błąd, że wymagany parametr.

Wróciłem więc do punktu wyjścia.

Rodzą się dwa pytania :
1. Czy w ogóle można wyłączyć " ?
2. Jak w pozostałych przypadkach, w których PHP nie dodaje " jako oznaczenie tekstu je dodać ?

Pyton_000
Dodaj po prostu zamiasz '"' -> '' i tyle,
a potem w każdej iteracji do każdej kolumny musisz ręcznie dać $row['col'] = '"'.$row['col'].'"';
i będziesz miał wszystkie w ", + ew. sprawdzaj sobie !is_numeric i wtedy dodawaj "
buracky
Nie przeczytałeś poprzedniego wpisu.

Nie można podać w parametrze pustego '' bo

<b>Warning</b>: fputcsv(): enclosure must be a character in <b>

Więc taki format :

  1. fputcsv($output, $value, ';', '');


nie działa ...
Pyton_000
A nie powiedziałeś że wywala taki błąd wink.gif

To spróbuj przed zapisem dodać " do stringów tak jak pisałem.
lukaskolista
Ale po właściwie tak bardzo chcesz dodawać cokolwiek do kolumn w csv?
buracky
Bo taki jest wymóg importu po drugiej stronie. Każdy tekst ma być w " a teksty rozdzielone mają być ;
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.