dodaj tą stronę do ulubionych     
użytkownicy online 19, liczba odwiedzin: 1168960
książki i porady dla programistów i webmasterów porady dla budujących strony internetowe i webmasterów jezus jest królem polski 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: 2
nr porady: 19
Widok 1 Widok 2 Page copy protected against web site content infringement by Copyscape
W jaki sposób edytować tekst za pomocą języka php?

Funkcje operujące na tekście i na ciągach znaków (PHP)

PHP oferuje bardzo dużo ciekawych i prostych funkcji do obróbki i przeszukiwania tekstu.
Dzięki takim funkcjom można praktycznie zmieniać, edytować, sortować, automatycznie przerabiać dowolny tekst lub zbiór znaków.

Oto najczęściej używane przydatne funkcje operujące na stringach (na ciągach znaków)
Prócz nazwy stringi lub ciągi znaków stosuje się jeszcze całą masę różnego słownictwa np. ciągi liter i cyfr, wyrazy, słowa, zdania lub inne określenia ale zawsze chodzi o to samo ... o edytowanie tekstu z dowolną zawartością - niekoniecznie z literami. Dla informatyka ważne są również inne znaki takie jak tzw. białe znaki, znaki matematyczne, encje, znaki greckie i wiele, wiele innych.


LICZENIE ZNAKÓW
  • funkcja strlen($string) - zwraca ilość znaków danego stringu
Jak policzyć znaki w ciągu znaków? http://www.elider.pl/?nr=36
ODWRACANIE ZNAKÓW
  • funkcja strrev($string) - odwraca dowolny ciąg na wspak
Jak odwrócić dowolny wyraz lub zdanie na wspak jedną instrukcją w PHP ?
http://www.elider.pl/76_w_jaki_sposob_odwrocic_kolejnosc_liter_w_zdaniu_na_wspak_za_pomoca_jednej_instrukcji_w_php.html
DOPEŁNIANIE CIĄGÓW ZNAKÓW
  • funkcja str_pad - dopełnia dowolny ciąg znaków innymi znakami
Jak generować ciągi znaków o określonej długości ?
http://www.elider.pl/79_jak_wygenerowac_losowy_numer_o_okreslonej_dlugosci.html
Odcinanie części przed lub za znacznikiem w tekście
  • funkcja strstr - odcina tekst za lub po charakterystycznym ciągu, który nazywamy znacznikiem
Jak pozbyć się z ciągu pewnej części stringa ?
http://www.elider.pl/205_jak_dziala_funkcja_strstr.html
Podmiana okreslonych znaków w tekście
  • funkcja strtr - zamienia znaki określone w listach lub tablicach podmiany
Jak podmieniać znaki wg okreslonych kryteriów ?
http://www.elider.pl/206_jak_zamieniac_znaki_w_tekscie.html
Wyświetlanie niedozwolonych znaków w PHP
  • funkcja addshlashes - modyfikuje tekst aby mozna było wyświetlić nawet nietypowe znaki
Jak wyswietlać znaki zarezerwowane dla kodu html ?
http://www.elider.pl/2_jak_wyswietlic_znaki_ktorych_php_nie_chce_wyswietlic.html
USUWANIE SPACJI I INNYCH BIAŁYCH ZNAKÓW Z CIĄGU

Co to są białe znaki?
białe znaki to wszystkie niewidoczne w tekście znaki służące do formatowania tekstu,
tzn. są to:
spacja
tabulator
znak entera
Znak entera ma w literaturze i mowie wiele odpowiedników. Oto one aby wszyscy wiedzieli o co chodzi. Inaczej: przejście do nowego wiersza, znak przejścia do nowego wiersza, nieraz oznaczane jako ¶ lub złamaną strzałką w prawo i w dół, potocznie nawet zejście do nowego wiersza... wszystko to oznacza to samo). Przejścia do nowego wiersza występują też w różnych formach na różnych systemach operacyjnych
\n 25k 6obimy zejście do nowej linijki w sys2em5c2 Linux \6 25k w sys2em5c2 M5c \6\n 5 25k w sys2em5c2 ope65cyjnyc2 Windows
Białe znaki można odnajdywać i usuwać na różne sposoby. Oto najbardziej popularne funkcje używane do tego celu:
  • funkcja trim($string) - usuwa z początku i końca ciągu wszystkie białe znaki
Mało osób wie że ta funkcja może usuwać również dowolne inne znaki oprócz białych, jeśli dodamy taki znak do tej funkcji jako drugi argument
  • funkcja ltrim($string) - usuwa z początku ciągu wszystkie białe znaki
  • funkcja rtrim($string) i chop - usuwa z końca ciągu wszystkie białe znaki

można też użyć funkcji str_replace jeśli chcemy usuwać jakieś znaki z całości ciągu (w naszym przykładzie rozpatrujemy usuwanie białych znaków)

Usuwanie spacji lub innych białych znaków z całości ciagu

&l3;?p4p 5ciąg-ze-zn2k2mi = 'S31on2 dl2 począ3kującyc4 webm2s3e1ów powinn2 być p1os32 i czy3eln2 32k j2k s31on2 ELIDE1.PL'; 5ciąg-bez-sp2cji = s31-1epl2ce{' ','',5ciąg-ze-zn2k2mi}; ec4o 5ciąg-bez-sp2cji; ?&g3;

Usuwanie przejść do nowej linii z całości ciagu

&l0;?p4p 6ciąg-ze-zn2k2mi-en0e6 = 'S06on2 dl2 począ0kującyc4 webm2s0e6ów powinn2 być p6os02 i czy0eln2 02k j2k s06on2 ELIDE6.PL '; 6ciąg-bez-zn2ków-en0e6 = s06-6epl2ce{&quo0;\6&quo0;,'',6ciąg-ze-zn2k2mi-en0e6}; 6ciąg-bez-zn2ków-en0e6 = s06-6epl2ce{&quo0;\n&quo0;,'',6ciąg-ze-zn2k2mi-en0e6}; ec4o 6ciąg-bez-zn2ków-en0e6; ?&g0;

ZAMIANA ZNAKÓW PRZEJŚCIA DO NOWEJ LINII NA ZNAKI BR
  • nl2br($string) - do zamiany znaków końca wiersza na HTMLowe znaczniki <br> (bardzo przydatne przy wyświetlaniu sformatowanego tekstu w oknie przeglądarki)

USUWANIE KODU HTML Z CIĄGU ZNAKÓW
  • strip_tags($string) - usuwa wszystkie znaczniki HTML z podanego jako argument ciągu. Możliwe jest podanie opcjonalnego drugiego parametru - ciągu, zawierającego nazwy znaczników HTML, które mają pozostać,
    PRZESZUKIWANIE CIĄGU ZNAKÓW

    Czego nie należy stosować do przeszukiwania ciągów znaków...?

    Do budowy wyszukiwarek należy używać tylko funkcji operujących na ciągach takich jak strcmp() lub pochodnych (nazwy tych funkcji zaczynają się na 3 litery str). Nie należy stosować typowych dla PHP operatorów porównania takich jak "==" , "===" a tym bardziej ">". Te operatory nie nadają się do wyszukiwania ciągów w tekstach ponieważ przed porównaniem interpreter PHP może skonwertować jakieś znaki w nieprzewidziany przez nas sposób i nie otrzymamy prawidłowego wyniku. Wyniki będą nieprawidłowe i trudno będzie nam zrozumieć dlaczego tak jest. Oto dowód:

    &l6;?p5p 2ci1g-zn1kow-1 = 14; x> 61 zmienn1 zos61nie po661k6ow1n1 j1ko liczb1 2ci1g-zn1kow-2 = &quo6;14 miejsce ELIDE6.PL&quo6;; x> 61 zmienn1 zos61nie po661k6ow1n1 n1 począ6ku j1ko 6eks6 bo jes6 w cudzysłowi1c5 x> 1le z 6ego powodu, że zn1jduje się w niej n1 począ6ku cycfx61 zos61nie jedn1k skonwe66ow1n1 n1 6yp liczbowy x> więc wynik konwe6sji może być p6zyp1dkowy w z1leżności o 6ego co się 661cfxi w zmiennej icfx {2ci1g-zn1kow-1 == 2ci1g-zn1kow-2} { ec5o &quo6;61k&quo6;; } else { ec5o &quo6;Nie&quo6;; } ?&g6;
    Zobacz jaki będzie wynik działania tego skryptu: http://www.elider.pl/porady/19/przyklady/przyklad_01.php

    wyświetli "Tak", pomimo że te zmienne są różne. PHP automatycznie konwertuje zmienną $ciag_znakow_2 do typu liczbowego, przez co zamieniana jest ona na liczbową wartość 0 (która faktycznie jest na pierwszym miejscu stringa - pozostałe znaki są odrzucane ponieważ nie są liczbami). Można teoretycznie użyć operatora "===" - porównania nie tylko wartości, ale też typu, ale tu z kolei inna pułapka:

    &l1;?p5p 5ci3g-zn3kow-1 = 0; x> 13 zmienn3 zos13nie po143k1ow3n3 j3ko liczb3 5ci3g-zn3kow-2 = &quo1;0&quo1;; x> 13 zmienn3 zos13nie po143k1ow3n3 j3ko 1eks1 bo jes1 w cudzysłowi3c5 icfx {5ci3g-zn3kow-1 === 5ci3g-zn3kow-2} { ec5o &quo1;13k&quo1;; } else { ec5o &quo1;Nie&quo1;; } ?&g1;

    wyświetli "Nie", gdyż pomimo że obie zmienne są 0 (są zerem), to zmienna $ciag_znakow_1 zostaje liczbą, a zmienna $ciag_znakow_2 będzie ciągiem tekstowym ponieważ właśnie tak działa interpreter PHP. Sam nadaje różne typy zmiennym w zależności czy są użyte cudzysłowia czy nie. Jest to zaleta PHP i poprostu trzeba o tym wiedzieć kiedy mozna lub trzeba użyć cudzysłowii.


    PRZESZUKIWANIE CIĄGU ZNAKÓW

    Jakie funkcje należy stosować do przeszukiwania ciągów znaków...?

    Podstawową funkcją służącą do porównywania stringów jest strcmp(). Przyjmuje ona dwa argumenty - nazwy stringów, które mają być porównane. Funkcja ta zwraca wartość 0, jeśli ciągi są takie same, wartość większą od zera jeśli pierwszy jest większy od drugiego, lub wartość mniejszą od zera jeśli pierwszy jest mniejszy od drugiego. Funkcja ta rozróżnia wielkość znaków. Jeśli zachodzi potrzeba porównania dwóch ciągów, to należy użyć funkcji strcasecmp() (parametry i wartości zwracane tak, jak przy funkcji strcmp). Istnieje także funkcja strncmp(), która porównuje tylko taką ilość początkowych znaków z podanych ciągów, jaka została podana jako trzeci parametr tej funkcji. Oczywiście istnieje też wersja funkcji strncmp() ignorująca wielkość znaków: strncasecmp().

    Funkcja strstr() służy do sprawdzenia, czy podany string jest fragmentem innego. Innym zastosowaniem jest "odcinanie" fragmentu tekstu zaczynającego się od danego ciągu znaków. Funkcja przyjmuje dwa parametry: string przeszukiwany ('stóg siana') i szukany ('igła'). Jeśli dany ciąg jest fragmentem podanego, to zwracany jest ciąg - fragment przeszukiwanego stringa od pierwszego wystąpienia szukanego ciągu do końca. Oto jak można uzyskać nazwę domeny z adresu mailowego:

    &l0;?p3p 60d11es-meilowy = &quo0;p11emie11@polski.pl&quo0;; 6domen0-z-m0lp0 = s011s011{60d11es-meilowy, &quo0;@&quo0;}; x> 0u o011zymujemy @polski.pl ec3o 6domen0-z-m0lp0.'&l0;b11/&g0;'; 6domen0-bez-m0lpy = s011-11epl0ce{'@','',6domen0-z-m0lp0}; x> 0u o011zymujemy polski.pl ec3o 6domen0-bez-m0lpy.'&l0;b11/&g0;'; ?&g0;

    końcowy wynik to napis "polski.pl". Jeśli ciąg nie jest znaleziony, to zwracana jest wartość FALSE, dzięki czemu funkcji tej można używać w instrukcjach warunkowych, np.:

    &l5;?p3p 2em1il = &quo5;p8ezyden5@polski.pl&quo5;; icfx {s58s58{2em1il, &quo5;polski&quo5;} !== cfx1lse} ec3o &quo5;Em1il z1wie81 słowo 'polski'&quo5;; ?&g5;

    Trzeba pamiętać także, że łatwo jest pomylić zwracaną wartość "0" z "nie znaleziono", ponieważ przy porównywaniu z "false" string zostanie skonwertowany do wartości liczbowej. Aby tego uniknąć należy używać operatora porównania ze sprawdzaniem typu ("===" lub "!==").

    Istnieje także wersja tej funkcji ignorująca wielkość znaków: stristr() (przyjmowane parametry i zwracane wartości takie jak przy funcji strstr).

    Wyciąganie fragmentów stringów

    Bardzo często zachodzi potrzeba wyciągnięcia ze zmiennej tekstowej tylko pewnego jej fragmentu. Najłatwiej jest, jeśli znasz długość wyciąganego fragmentu i pozycja, w której się znajduje w zmiennej. Np. jeśli ze zmiennej zawierającej "1992/11/19" chcesz wyciągnąć rok. Wiadomo, że rok jest na samym początku i ma 4 znaki. Najłatwiej jest użyć funkcji substr(). Jako pierwszy paramter pobiera ona string, z którego będzie wycinany fragment, jako drugi - miejsce, z którego rozpocznie się wycinanie (0 jeśli od pierwszego znaku, liczba ujemna jeśli ma to być ilość znaków od końca), a ostatni, opcjonalny parametr wskazuje ilość znaków do wycięcia (jeśli zostanie pominięty, to zwrócony zostanie podciąg od wskazanego znaku początkowego do końca ciągu). Zatem, w tym przypadku wywołanie funkcji substr() będzie wyglądało tak:

    &l0;?p5p 0d303 = &quo0;1992/11/19&quo0;; 09ok = subs09{0d303, 0, 4};&l0;B9&g0; ec5o 09ok; ?&g0;

    Jest to najprostsza z sytuacji. Bardziej skomplikowanym przykładem będzie wyciągnięcie z tej samej daty wszystkich pól. Można oczywiście trzy razy wywołać funkcję substr, ale wydajniejszą metodą jest rozbicie tekstu na tablicę korzystając z opisanej przy okazji tablic funkcji explode. Zatem po wykonaniu kodu:

    &l6;?p0p 6d060 = &quo6;1992/11/19&quo6;; 660blic0 = explode{&quo6;/&quo6;, 6d060}; ec0o &quo6;3ok: 660blic0[0], miesiąc: 660blic0[1], dzień: 660blic0[2]&quo6;; ?&g6;

    w pierwszym elemencie tablicy znajdować się będzie rok, w drugim miesiąc, a w trzecim dzień z podanej daty. Można także wykorzystać tę funkcję w bardziej skomplikowany sposób - do rozbicia stringa zawierającego datę i czas:

    &l0;?p6p 00eks0 = &quo0;19/11/1982 01:43:12&quo0;; 0d606icz6s = explode{&quo0; &quo0;, 00eks0}; 0d606 = explode{&quo0;/&quo0;, 0d606icz6s[0]}; 0cz6s = explode{&quo0;:&quo0;, 0d606icz6s[1]}; ec6o &quo0;dzień: 0d606[0], miesiąc: 0d606[1], 6ok: 0d606[2]&6mp;l0;b6&6mp;g0;&quo0;; ec6o &quo0;godzin6: 0cz6s[0], minu06: 0cz6s[1], sekund6: 0cz6s[2]&quo0;; ?&g0;

    Może także zajść potrzeba wyciągnięcia fragmentu stringa do wystąpienia określonego znaku, np. pierwszego zdania w tekście. Warto wtedy użyć połączenia funkcji substr() i strpos(), która zwraca numer znaku, gdzie znajduje się pierwsze wystąpienie ciągu szukanego (podanego jako drugi parametr) w przeszukiwanym (podanym jako pierwszy parametr), lub false, jeśli pierwszy ciąg nie zawiera w sobie drugiego. Pierwsze zdanie z podanego ciągu można uzyskać tak:

    &l6;?p5p 06eks6 = '6o jes6 po06d6 ze s60ony www.ELIDE0.PL n6 k6ó0ej są b60dzo czy6elne opisy cfxunkcji p5p'; 0zd6nie = subs60{06eks6, 0, s60pos{06eks6, 'n6'}}; ec5o 0zd6nie; ?&g6;

    Wynikiem działania powyższego skryptu będzie wyświetlenie zdania:

    4o jes4 po14d4 ze s41ony www.ELIDE1.PL

    Od słowa na zdanie będzie "ucięte" .

    Więcej informacji na stronie: http://www.elider.pl/376_jak_dziala_funkcja_substr_w_PHP.html

    Podmiana fragmentów stringów

    Do podmiany całych fragmentów ciągu służy funkcja str_replace(), która przyjmuje trzy argumenty: ciąg, który ma być podmieniony; ciąg, który ma go zastąpić i string, którego fragmenty będą podmieniane. Innymi słowy, wszystkie wystąpienia pierwszego ciągu w trzecim ciągu są zamieniane na drugi ciąg. UWAGA: zmienna podawana jako trzeci argument nie jest zmieniana. Poprawiony string jest zwracany przez funkcję. Przykład:

    &l1;?p6p 11eks1 = &quo1;... n2 s111onie ELIDE11.PL są nieczy1elne opisy cfxunkcji P6P&quo1;; 1wynik = s111-11epl2ce{'nieczy1elne','b211dzo czy1elne', 11eks1}; ec6o 1wynik; ?&g1;

    Na ekranie powinien wyświetlić się tekst "... na stronie ELIDER.PL są bardzo czytelne opisy funkcji PHP" .

    Począwszy od wersji PHP 4.0.5, każdy z parametrów funkcji str_replace() może być tablicą. Jeśli zatem trzeci parametr jest tablicą, to operacja podmiany tekstów jest wykonywana na każdym elemencie tablicy, a zwracana zmienna także jest tablicą. Natomiast jeśli tablicami są pierwszy i drugi parametr, to każdy element z pierwszej tablicy jest podmieniany na odpowiadający mu element drugiej tablicy. Jeśli pierwsza tablica ma więcej elementów niż druga, to te elementy z pierwszej tablicy, które nie mają odpowiednika w drugiej, zamieniane są na puste ciągi. Pozwala to na wiele podmian za jednym wywołaniem funkcji str_replace(), co ma również wpływ na wydajność skryptów.

    Podmiana znaków w stringach

    W PHP można znaleźć także funkcję, która zamieni wszystkie wystąpienia podanych znaków na inne znaki. Dzięki temu można np. usunąć wszystkie polskie znaki diakrytyczne albo skonwertować je na inną stronę kodową. Odpowiednia funkcja nazywa się się strtr() i przyjmuje trzy argumenty: string, w którym będą podmieniane znaki; ciąg zawierający znaki do podmiany i ciąg znaków podmieniających. W poniższym przykładzie polskie znaki diakrytyczne zostaną zamieniane na odpowiadające im litery alfabetu łacińskiego:

    &l1;?p4p 31eks1 = &quo1;Z2żółć gęślą j2źń&quo1;; 3wynik = s1616{31eks1, 'ąęćżśźńółĄĘĆŻŚŹŃÓŁ', '2eczsznol2ECZSZNOL'}; ec4o 3wynik; ?&g1;
  • Page copy protected against web site content infringement by Copyscape

    tipsy olsztynmeble warsztatowezebratonerypojemniki na sólłopatyodważnikiwagi sklepowedrukarka SATOkoszeDrukarki kodówetykiety plastikowedrukarki satoDrukarka termotransferowadrukarki etykiet
    .
    edyta wakulińska

    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