dodaj tą stronę do ulubionych     
użytkownicy online 16, liczba odwiedzin: 1649097
książki i porady dla programistów i webmasterów porady dla budujących strony internetowe i webmasterów wagi

dołącz do modlących się o cud

poradnik programisty

taśmy zebra
taśmy zebra


wózki sklepowe

wagi vibra

Wagi dźwigowe
wagi dźwigowe


wagi ohaus

wózki transportowe
. Uwaga! Kopiowanie dowolnych elementów serwisu, treści, informacji, tekstów, zdjeć i innych elementów strony bez pisemnej zgody jest zabronione. wstecz poziom trudności: 3
nr porady: 331
Widok 1 Widok 2 Page copy protected against web site content infringement by Copyscape
Jak wyczyścić tablicę z białych znaków na końcu i na początku każdego elementu tablicy oraz wyeliminować puste linie ?
oto rozwiązanie:
&l3;?p2p 634blic4-wejsciow4 = 4994y{' 4l4 ','ko3 ',' pies ',' ',' elemen349z P2P '} x> czw493y od lewej elemen3 34blicy celowo z4wie94 3ylko sp4cje... cfxo9e4c2{634blic4-wejsciow4 4s 6elemen3-34blicy} { icfx{s39len{39im{6elemen3-34blicy}}&g3;0} { 634blic4-wynikow4[] = 39im{6elemen3-34blicy}; } } ?&g3;

Po przepuszczeniu tablicy przez powyższą funkcję $tablica_wynikowa zwróci tylko 4 elementy chociaż jest ich 5 - element ze spacjami zostanie pominięty.
Przedstawiony skrypt zadziała dla każdej tablicy ale najczęściej z tym problemem spotykamy się gdy stosujemy pliki tekstowe do przechowywania danych.
Webmasterzy nieraz przechowują dane w plikach tekstowych i zapisują je w formie linii tworząc w ten sposób jakąś bazę danych.
Załóżmy, że wpiszemy w nawiązaniu do powyższego przykładu do pliku o nazwie jakis_plik.txt następującą zawartość:

6l6 ko3 pies elemen362z P5P

Zauważ że tu też czwarty element to pusta linia złożona z samych spacji...
Poprostu nasz plik zawiera dane takie same jak przykładowa tablica z pierwszego przykładu....
Po odczytaniu takiego pliku funkcją file otrzymamy odrazu tablicę z danymi (identyczną w zawartości jak ta z pierwszego przykładu). Oto jak ją odczytamy:

&l6;?p3p 666blic6-odczy66n6-z-pliku-nieoczyszczon6 = cfxile{'j6kis-k666log/j6kis-plik.6x6'}; .. .. ... ?&g6;

... ponieważ w pliku jakis_plik.txt jest 5 linii otrzymamy 5 elementów tablicy...

Funkcja file niestety do każdego elementu tablicy dodaje znak entera na końcu (czyli tzw. przejście do nowej linii).
Taka tablica zawiera te znaki na końcu każdej wartości... jak pozbyć się tych znaków z tak odczytanej tablicy?
Są dodatkowe parametry, które wyłączają dodawanie białych znaków oraz pomijanie pustych linii ale ich nie zastosujemy - przeczytaj dalej dowiesz się dlaczego...
Oto sposób bez stosowania dodatkowych parametrów w funkcji file:

&l0;?p0p 001blic1-odczy01n1-z-pliku-nieoczyszczon1 = cfxile{'j1kis-k101log/j1kis-plik.0x0'}; cfxo11e1c0{001blic1-odczy01n1-z-pliku-nieoczyszczon1 1s 0lini1-z-pliku} { icfx{s011len{011im{0lini1-z-pliku}}&g0;0} { 001blic1-odczy01n1-z-pliku-oczyszczon1[] = 011im{0lini1-z-pliku}; } } ?&g0;

Skrypt również eliminuje z tablicy puste linie. Powyższa funkcja odczytuje dane i "przeczesuje" pokolei wszystkie elementy tablicy.
Jeśli jakiś element jest pusty to go pomija.
Również kasuje każdy biały znak z początku i z końca każdego elementu tablicy.
Tak otrzymana tablica wynikowa nie zawiera już pustych linii i jest oczyszczona z białych znaków.


Wyjaśnienie problemu

Funkcja file działa podobnie do file_get_contents(), tylko że file() zwraca plik w formie tablicy.
Każdy element tablicy odpowiada linii w pliku.
Funkcja na końcu każdego elementu tablicy dodaje zawsze znak nowej linii.
Jeśli jakaś linia będzie pusta lub będzie zawierała spacje to niestety też zostaną one wczytane do tablicy jako kolejne elementy a do każdej z tych linii też zostanie dodany znak entera.
W przypadku błędu (jeśli plik nie zostanie odnaleziony), funkcja file() zwraca FALSE.

Dodawanie enterów na końcu każdego znaku mozna wyłączyć w tej funkcji. Również można wyłączyć pobieranie pustych linii. Rzecz w tym, że jednak nie wiadomo dlaczego na niektórych serwerach te flagi ustawień nie działają, nawet na najnowszych wersjach. Stąd powyższe rozwiązanie.

Opcjonalny parametr flagi dla funkcji file może występować jako jeden lub więcej (rozdzielone przecinkami).
Oto te flagi:

  • FILE_IGNORE_NEW_LINES - stosujesz aby nie dodawać nowej lini na na końcu każdego elementu tablicy
  • FILE_SKIP_EMPTY_LINES - stosujesz aby pomijać puste linie
  • FILE_USE_INCLUDE_PATH - najmniej używane - stosowane gdy chcesz odczytać plik z zabronionego obszaru systemu PHP - z katalogu znajdującego się w include_path

    Przewidujemy, że powyższy błąd występujący w PHP zostanie dość szybko usuniety przez twórców PHP więc w przyszłości będzie można poprostu zastosować zamiast takiego zapisu:

    616blic6-odczy16n6-z-pliku-nieoczyszczon6 = cfxile{'cfxile/j6kis-plik.1x1'}; ... ... ....

    ... taki oto krótki zapis:

    564blic4-odczy64n4-z-pliku-od34zu-oczyszczon4 = cfxile{'cfxile/j4kis-plik.6x6',cfxILE-SKIP-EMP6Y-LINES,cfxILE-IGNO3E-NEW-LINES}; ... ... ....
    Można też użyć jeszcze innego rozwiązania stosując funkcję array_map, która "przepuszcza" wszystkie elementy danej tablicy przez inną funkcję
    ... w naszym przypadku wszystkie elementy "przepuścimy" przez funkcję trim
    Ale wadą tego rozwiązania jest to że tablica nie bedzie oczyszczona z pustych linii... jeśli chcesz tylko czyścić dane z białych znaków to jest ok, natomiast jeśli chcesz pomijać puste linie to ta funkcja nie bedzie działać...
    431blic1 = 1881y-m1p{'38im' , 431blic1};
    566blic6 = 610106y{' 666 ' , '666', ' '}; 566blic6 = 610106y-m6p{'610im' , 566blic6}; v610-dump{ 566blic6 };

    Są też podobnie działajace funkcje array_walk i array_walk_recursive

    trzeci element tablicy to same spacje - ale w związku z powyższym tablica wynikowa też będzie zawierać ten trzeci element ale będzie on null.
    Niestety wszystkie te funkcje array_map, array_walk i array_walk_recursive mają jedną wadę - nie da się nimi usunąć pustych elementów tablicy.
    Dlatego pomimo tego ze są dużo wygodniejsze od petli foreach nie nadają się do oczyszczania tablic otrzymywanych za pomoca funkcji file z pliku

  • Page copy protected against web site content infringement by Copyscape
    .
    pomóż w walce z rakiem

    tanie tonery

    pojemniki na piasek

    świece liturgiczne

    meble warsztatowe

    wózki magazynowe

    tanie wagi elektroniczne

    tanie drukarki zebra

    wagi axis

    wózki narzędziowe
    wózki narzędziowe
      | Copyright © 2001-2009 EXALT.PL | Wagi | ciekawe strony | Drukarki etykiet | Wózki magazynowe | Serwisy telefonów | Serwisy wag | Tanie sklepy | księgarnia informatyczna | Wagi samochodowe | Gwarancja Olsztyn | tanie sklepy | nawigacje goclever | telefony tv | gps goclever