643 Shares 5722 views

PHP Praktyka: porównanie ciąg

PHP koncentruje się na dobrej obsługi informacji. Składnia języka jest reprezentowana w pełni funkcjonalny zestaw funkcji porównawczych, przetwarzania smyczkowy, operatorów porównawczych.

Wszelkie algorytm – ciąg wyborów i działań. Jednak przed dokonaniem wyboru, trzeba coś do porównania go z czymś. Linia – najbardziej pojemny, wydajny i praktyczny mechanizm kontroli algorytm. Line – wariant prezentacji danych. Teleinformatyczny – to główny temat „opieki” jakiegokolwiek algorytmu.

Zwykła logika „Porównanie-action”

W ogóle, dynamiczny język wpisując ma żadnych różnic w danych, takich jak linia porównania PHP i numer nie różni się zbytnio. Number – jest to także ciąg, gdy zawiera wyłącznie cyfry, punkt i tam nie jest pojedynczym znakiem, który nie jest używany do reprezentacji liczb w każdej postaci (notacji matematycznej).

Jeśli liczba kontenkatsii automatycznie łączy się z linii, bez żadnych pytań i żadnych ukrytych błędów, nawet jeśli funkcja GetType () daje „całkowitą” lub „podwójnie”.

Jednak istnieje różnica pomiędzy stosowaniem is_int () i is_numeric (). Pierwszy daje prawdę, tylko wtedy, gdy parametr jest liczbą całkowitą, drugi, gdy dowolna liczba lub ciąg liczbowy (zmienna jest typu „string”, ale obejmuje wszystkie dostarczone notacji matematycznej).

Jest to prosty przykład – to dobry przykład tego, jak operatory porównania PHP string ( „==” „===” … „=”!) Można przedstawić wiele niespodzianek. Zmienne mogą zmienić ich typ, nie zawsze są numery, ale prawie zawsze mogą one prowadzić do linii. W skrajnym przypadku – będzie to pusty ciąg.

W oparciu o powyższe, PHP funkcja porównanie łańcuch jest najbardziej popularny. Co dokładnie wybrać, by zdecydować się z deweloperem. Wiele opcji dostępnych do wyrażeń regularnych.

Granice dostępny funkcjonalny

PHP-porównanie dwóch wierszy jest dobra „czy” strpos function () – najtańszy, wiernym i praktycznym rozwiązaniem. Jeżeli w wyniku szeregu funkcji, a następnie wyraźnie jeden ciąg jest równy lub inny jednej części do drugiej.

Radykalnie przeciwny, ale też absolutnie słuszne podejście – stosowanie wyrażeń regularnych.

Jeśli funkcja $ cResult = scCheckFileName ($ CStr) podaje „prawdziwy”, wówczas jest to nazwa vordovsky plików. będzie miał tylko jedną opcję ekspansji „.docx” i żadnych znaków w nazwie: tylko litery, cyfry i znaki «_», «-».

Funkcję tę można łatwo przekształcić do innych typów plików: $ cPtr = „/^([a-zA-Z…0-9-_]{4,239}).(html|js|css|png|jpg | docx | txt) {1} $ / u”. Ten wariant obejmuje (np porównanie ciąg PHP jest stosowana „aby przesłać pliki na serwer, bez możliwości błędu wejścia”) zakres skanowania do pobrania wiersza dla HTML, JS, CSS, …

Używanie strpos () i preg_match () – skrajności. Nie są one bezpośrednio związane z emisją okresu porównawczego. Ale pytanie algorytmu – to kwestia stosując kombinację stylu, wykorzystanie wszystkich możliwości uzyskania wiarygodnej i poprawny wynik.

PHP funkcjonalny: porównanie ciąg

Arsenal język porównywane ciągi – czysta, nie tylko funkcja porównanie, ale również kombinacja wyszukiwania lub substytut bezpośrednio. Nie zawsze działać musi pokrywać się z porównania, ponieważ ten ostatni nie musi prowadzić do zmiany w każdym rzędzie. Często trzeba wybrać jedną lub drugą gałąź algorytmu.

Normalny wariant PHP wykonuje porównania ciągów funkcja int strcmp (s1, s2).

Wynikiem funkcji:

  • 0 – linii są równe;
  • 1 – pierwszy ciąg znaków jest mniejszy niż drugi;
  • 1 – pierwszy więcej niż rząd drugi.

W praktyce oznacza to, że część pierwszego rzędu do drugiego, z których funkcja PHP (porównanie rzędów) zadecyduje. Bardziej ograniczona wersja strpos (), ponieważ w tym drugim przypadku możliwe jest, aby znać pozycję wpisu.

strcmp () Funkcja – wrażliwa. Jeśli chcesz porównać ciąg niewrażliwe, PHP oferuje swoje strcasecmp (). Składnia jest podobna.

W praktyce często muszą działać z całą linią, ale tylko część. Do tego zestawu funkcji PHP (porównanie string) zawarte strncmp (s1, s2, N). Trzeci parametr określa wykonać porównanie tylko N-bajtów. Wyniki podobne do strcmp ().

Tablic, smyczki i porównanie

Są one prawie zawsze reprezentowane przez ciągi. Jeśli weźmiemy pod uwagę tablice, obiektach lub struktur danych, to tylko różne warianty kombinacji prostych struktur łańcuchowych.

Macierze łańcuch i rzędy mogą być dostarczane w sposób komplementarny. Transformacja matrycy do implode funkcyjny łańcuch (tablica, symbol), na przykład: $ margins1 = implode ( '' $ style-> getInnerMargin ()); … algorytm / user …; $ Margins2 = implode ( '' $ style-> getInnerMargin ()) pozwala na połączenie wszystkich pozycji obiektu w pozycji strun.

Następnie można wykonać porównanie ciąg PHP, i naraz: $ check = strcmp ($ margins1, $ margins2) i upewnij się, że algorytm lub użytkownik, że coś się zmieniło (lub nie). Jeśli wykonać porównanie w zwykły sposób, będziesz mieć do sortowania elementów tablicy. To trwa dłużej i jest bardziej skomplikowane.

Przedmioty i linia

Jeszcze bardziej spektakularny wykorzystanie PHP (porównania string) mogą być realizowane poprzez pomysłów obiektowych.

Nowoczesna idea obiektów sugeruje, że mają one właściwości i metody. Pierwsze są zwykle reprezentowane przez liczby, ciągi znaków, tablic i innych obiektów. Te ostatnie często obejmują techniki nagrywania (put) w linii pomocy i od linii (pobierz).

W przeciwieństwie do tablic, obiekt działa ze swoich właściwości i współdziała z innymi obiektami. Obiekt „właściwy”, w którym jego właściwości są od rzeczywistej wartości dla algorytmu programu jako całości.

Moment ten stanowi podstawę i możliwość nagrywania podczas nagrywania ciąg tylko niezbędne informacje, a w odzyskiwaniu linii, aby przywrócić wszystkie właściwości pracy w pożądanym stanie. Zazwyczaj w każdym obiekcie jest istotna informacja i pracy (czas). Realizacja tej idei pozwala zaoszczędzić nie tylko pamięci, przestrzeni dyskowej, rekord bazy danych, ale także pozwala porównać wiersze prostsze i bardziej dokładny sposób.

Składnia i semantyka

PHP rozwija się dynamicznie, a jego funkcjonalność zarówno w zakresie porównywania ciągów i stale ulepszone pod względem ich leczenia. Jednak nic nie stoi programistą, aby przesunąć środek ciężkości w zakresie semantyki.

Niewątpliwie funkcjonalność jest dobry, ale jego stosowanie może zostać przeniesiona w rozumieniu kodeksu w obiektach. Gdy algorytm jest przedstawiony jako system interakcji pomiędzy obiektami, wygląda o wiele lepiej niż porównywania sekwencji i działań w bezpośredniej kolejności, klasycznym stylu.