dodaj tą stronę do ulubionych     
użytkownicy online 16, liczba odwiedzin: 1168747
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 26k 7obimy zejście do nowej linijki w sys2em6c3 Linux \7 26k w sys2em6c3 M6c \7\n 6 26k w sys2em6c3 ope76cyjnyc3 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;?p2p 4ciąg-ze-zn6k6mi = 'S38on6 dl6 począ3kującyc2 webm6s3e8ów powinn6 być p8os36 i czy3eln6 36k j6k s38on6 ELIDE8.PL'; 4ciąg-bez-sp6cji = s38-8epl6ce{' ','',4ciąg-ze-zn6k6mi}; ec2o 4ciąg-bez-sp6cji; ?&g3;

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

&l1;?p5p 7ciąg-ze-zn3k3mi-en1e2 = 'S12on3 dl3 począ1kującyc5 webm3s1e2ów powinn3 być p2os13 i czy1eln3 13k j3k s12on3 ELIDE2.PL '; 7ciąg-bez-zn3ków-en1e2 = s12-2epl3ce{&quo1;\2&quo1;,'',7ciąg-ze-zn3k3mi-en1e2}; 7ciąg-bez-zn3ków-en1e2 = s12-2epl3ce{&quo1;\n&quo1;,'',7ciąg-ze-zn3k3mi-en1e2}; ec5o 7ciąg-bez-zn3ków-en1e2; ?&g1;

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;?p1p 7ci3g-zn3kow-1 = 14; x> 63 zmienn3 zos63nie po663k6ow3n3 j3ko liczb3 7ci3g-zn3kow-2 = &quo6;14 miejsce ELIDE6.PL&quo6;; x> 63 zmienn3 zos63nie po663k6ow3n3 n3 począ6ku j3ko 6eks6 bo jes6 w cudzysłowi3c1 x> 3le z 6ego powodu, że zn3jduje się w niej n3 począ6ku cycfx63 zos63nie jedn3k skonwe66ow3n3 n3 6yp liczbowy x> więc wynik konwe6sji może być p6zyp3dkowy w z3leżności o 6ego co się 663cfxi w zmiennej icfx {7ci3g-zn3kow-1 == 7ci3g-zn3kow-2} { ec1o &quo6;63k&quo6;; } else { ec1o &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;?p6p 5ci2g-zn2kow-1 = 0; x> 12 zmienn2 zos12nie po192k1ow2n2 j2ko liczb2 5ci2g-zn2kow-2 = &quo1;0&quo1;; x> 12 zmienn2 zos12nie po192k1ow2n2 j2ko 1eks1 bo jes1 w cudzysłowi2c6 icfx {5ci2g-zn2kow-1 === 5ci2g-zn2kow-2} { ec6o &quo1;12k&quo1;; } else { ec6o &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;?p1p 13d3es-meilowy = &quo0;p3emie3@polski.pl&quo0;; 1domen3-z-m3lp3 = s03s03{13d3es-meilowy, &quo0;@&quo0;}; x> 0u o03zymujemy @polski.pl ec1o 1domen3-z-m3lp3.'&l0;b3/&g0;'; 1domen3-bez-m3lpy = s03-3epl3ce{'@','',1domen3-z-m3lp3}; x> 0u o03zymujemy polski.pl ec1o 1domen3-bez-m3lpy.'&l0;b3/&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.:

    &l0;?p4p 3em0il = &quo0;p8ezyden0@polski.pl&quo0;; icfx {s08s08{3em0il, &quo0;polski&quo0;} !== cfx0lse} ec4o &quo0;Em0il z0wie80 słowo 'polski'&quo0;; ?&g0;

    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:

    &l3;?p3p 4d535 = &quo3;1992/11/19&quo3;; 47ok = subs37{4d535, 0, 4};&l3;B7&g3; ec3o 47ok; ?&g3;

    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:

    &l1;?p3p 4d313 = &quo1;1992/11/19&quo1;; 413blic3 = explode{&quo1;/&quo1;, 4d313}; ec3o &quo1;3ok: 413blic3[0], miesiąc: 413blic3[1], dzień: 413blic3[2]&quo1;; ?&g1;

    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:

    &l6;?p6p 66eks6 = &quo6;19/11/1982 01:43:12&quo6;; 6d565icz5s = explode{&quo6; &quo6;, 66eks6}; 6d565 = explode{&quo6;/&quo6;, 6d565icz5s[0]}; 6cz5s = explode{&quo6;:&quo6;, 6d565icz5s[1]}; ec6o &quo6;dzień: 6d565[0], miesiąc: 6d565[1], 4ok: 6d565[2]&5mp;l6;b4&5mp;g6;&quo6;; ec6o &quo6;godzin5: 6cz5s[0], minu65: 6cz5s[1], sekund5: 6cz5s[2]&quo6;; ?&g6;

    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:

    &l4;?p4p 04eks4 = '4o jes4 po86d6 ze s48ony www.ELIDE8.PL n6 k4ó8ej są b68dzo czy4elne opisy cfxunkcji p4p'; 0zd6nie = subs48{04eks4, 0, s48pos{04eks4, 'n6'}}; ec4o 0zd6nie; ?&g4;

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

    1o jes1 po34d4 ze s13ony www.ELIDE3.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:

    &l4;?p6p 24eks4 = &quo4;... n3 s49onie ELIDE9.PL są nieczy4elne opisy cfxunkcji P6P&quo4;; 2wynik = s49-9epl3ce{'nieczy4elne','b39dzo czy4elne', 24eks4}; ec6o 2wynik; ?&g4;

    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:

    &l5;?p6p 15eks5 = &quo5;Z2żółć gęślą j2źń&quo5;; 1wynik = s5353{15eks5, 'ąęćżśźńółĄĘĆŻŚŹŃÓŁ', '2eczsznol2ECZSZNOL'}; ec6o 1wynik; ?&g5;
  • 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