Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Rozdzielenie danych explode
Forum PHP.pl > Forum > Przedszkole
nowyyy31
Witam,

Próbuje rozdzielić tekst który jest w cudzysłowiu i dzielony jest przecinkiem, na przykład:

"Moja podstrona", "http://www.mojasuperdomena.pl/podstrona,nr,3.html"
"Moja strona www", "http://www.mojasuperdomena.pl"

Poprzesłanianiu takich danych przez formularz chciałbym uzyskać treść bez cudzysłowów.
udało mi się uzyskać taki kod, ale cudzysłów zostaje.
  1. $_linie = explode("\r",$dane_post);
  2. $ile = count($_linie);
  3. if ($ile>0) {
  4. foreach($_linie as $linie) {
  5. $linie = substr($linie,0,255);
  6. $linie = trim($linie);
  7. $linie = eregi_replace("([[:space:]]+)", " ", $linie);
  8. $dane = explode(",", $linie);
  9.  
  10.  
  11. $title = $dane[0];
  12. $url = $dane[1];
  13.  
  14. echo $title //Moja strona
  15. echo $url // ttp://www.mojasuperdomena.pl
  16.  
  17. }
  18. }
SmokAnalog
Ten format danych to Comma-separated Values (CSV). Myślę, że najbardziej elegancko byłoby użyć w tym celu wbudowanych funkcji do obsługi tego formatu.
djgarsi
Hm. Wg mnie najpierw explode po przecinku a później str_replace na cudzysłów.
SmokAnalog
Kolego wyżej, jeśli jesteś aspirującym programistą, musisz nauczyć się analizować wszystkie przypadki. W danych mogą być zawarte cudzysłowy, a nikt nie będzie szczęśliwy, jeśli ot tak sobie znikną. Ewentualnie można użyć odpowiedniego wzorca dla preg_match lub po explode usunąć pierwszy i ostatni znak, ale namawiam na obsługę CSV z prawdziwego zdarzenia. Nauczysz się czegoś nowego i potraktujesz dane jak należy.
nowyyy31
Czy do funkcji fgetcsv można przesłać prosto dane z $_POST czy trzeba najpierw zapisać do CSV?

  1. while($dane = fgetcsv($url,100, ",")){
  2.  
  3. print_r($dane);
  4. }
konrados
Użyj raczej tego: http://php.net/manual/en/function.str-getcsv.php
Możesz tam zapodać zwykły string a nie ścieżkę do pliku.
nowyyy31
Udało mi się stworzyć kod:

  1. $url=$_POST['url'];
  2. $delimiter = ',';
  3. $enclosure = '"';
  4. $csvfile = str_getcsv($url, $delimiter, $enclosure);
  5. print_r($csvfile);


Który teoretycznie będzie działać tylko napotkałem inny problem bo nie mogę użyć funkcji str_getcsv gdyż nie działa na moim serwerze. ;/

Czy jest jeszcze jakiś sposób żeby uzyskać efekt o którym pisałem w pierwszym poście?
IProSoft
W komentarzach masz zamienniki, np:
http://www.php.net/manual/pl/function.str-getcsv.php#105209
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.