nisfarm.ru

Praxe PHP: porovnání řetězců

PHP je velmi dobré při zpracování informací. Syntaxe jazyka představuje plnohodnotná sada porovnávacích funkcí, zpracování řetězců, porovnávací operátory.

php porovnání řetězců

Každý algoritmus je posloupností možností a akcí. Ale než se rozhodnete, musíte něco něco srovnat. Řetězce - nejprostornější, efektivní a praktický mechanismus pro řízení algoritmu. Linky - varianta reprezentace dat. A data jsou hlavním předmětem "péče" jakéhokoli algoritmu.

Obvyklá logika "srovnávací akce"

Obecně platí jazyk dynamické psaní nedělá žádné zvláštní rozdíly v datech, například v PHP, porovnání řetězce a čísla není příliš odlišné. Číslo je také řetězec, pokud obsahuje pouze číslice, období a neexistuje ani jeden znak, který by nebyl použit k reprezentování čísla v žádné jeho formě (matematická notace).

V případě číslování se číslo automaticky spojí s řetězcem bez dalších otázek a bez skrytých chyb, i když funkce gettype () udává "integer" nebo "double".

php porovnání dvou řetězců

Existuje však rozdíl mezi použitím is_int () a is_numeric (). První dává pravdu, pouze v případě, že parametr je celé číslo, druhý, když všechna čísla a číselný řetězec (typ proměnné je ‚řetězec‘, ale zahrnuje všechny uvedené matematický zápis).

Tento jednoduchý příklad je dobrým příkladem, protože operátoři porovnávání řetězců PHP (`==`, `==`, `! =`, ...) mohou dát spoustu překvapení. Proměnné mohou změnit svůj typ, nejsou vždy čísla, ale téměř vždy mohou vést k řetězci. V extrémním případě to bude prázdný řetězec.




php operátory porovnání řetězců

Na základě výše uvedených skutečností je v PHP nejpopulárnější porovnávací funkce. Který z nich si vybere, aby vyřešil vývojáře. K regulárním výrazům je k dispozici mnoho možností.

Hranice dostupné funkce

PHP-porovnání dvou řetězců je dobře "provedeno" funkcí strpos () - nejlevnější, pravá a praktická volba. Pokud Výsledkem toho funkce je číslo, pak jedinečně jeden řádek je stejný jako druhý nebo jeden vstupuje jiný.

Kardinálně opačný, ale také absolutně správný přístup je použití regulárních výrazů.

Příkladem autora není obrázek

Pokud volání $ cResult = scCheckFileName ($ cStr) přináší hodnotu true, pak je řetězec názvem souboru vord. Bude mít pouze jedno rozšíření ".docx" a žádné znaky v názvu: pouze písmena, číslice a znaky "_", ";".

Tuto funkci lze snadno převést na jiné typy souborů: $ cPtr = ‚/^([a-zA-Z...0-9-_]{4,239}).(html|js|css|png|jpg | docx | txt) {1} $ / u‘. Tato varianta rozšiřuje rozsah snímání čáry stahovatelný (například porovnání PHP řetězec je aplikován „nahrát soubory na server, bez možnosti vstupu chyby“) pro html, js, css, ...

Použití strpos () a preg_match () je extrémní. Nejsou přímo spojeny s otázkou časového porovnání. Ale otázka algoritmu - je otázkou použití kombinace stylu a využití všech možností k dosažení spolehlivého a správný výsledek.

Funkční PHP: porovnání řetězců

Arsenál jazyka proti strunám není jen funkcí čistého srovnání, ale kombinace s hledáním nebo přímým nahrazením. Ne vždy by se akce měla shodovat s porovnáním, neboť ta nutně nevede ke změně v žádném řádku. Často je nutné vybrat jednu nebo jinou větev algoritmu.

Obvyklá verze PHP: porovnání řetězců se provádí pomocí funkce int strcmp (s1, s2).

Funkční výsledek:

  • 0 - řádky jsou stejné;
  • -1 - první řádek je menší než druhý;
  • 1 - první řádek je větší než druhý.

V praxi to znamená, že první řádek vstoupí do druhé řady, ze které se rozhodne funkce PHP (porovnání řetězců). Omezená verze strpos (), protože v druhém případě můžete poznat vstupní pozici.

Funkce strcmp () rozlišuje velká a malá písmena. Pokud chcete porovnat řetězce bez rozlišování malých a malých písmen, doporučuje PHP použít strcasecmp (). Syntaxe je podobná.

V praxi je často nutné pracovat ne s celou čárou, ale pouze s její částí. Pro tuto sadu funkcí PHP (porovnání řetězců) zahrnuty strncmp (S1, S2, N). Třetí parametr označuje, že jsou porovnávány pouze N-bajty. Výsledek je podobný strcmp ().

Pole, řetězce a porovnání

Data jsou téměř vždy reprezentována řetězci. Pokud uvážíme pole, objekty nebo informační struktury, jsou to jednoduše různé varianty kombinace jednodušších řetězcových struktur.

php porovnání funkcí

String pole a řádky mohou být opatřeny doplňkovým způsobem. Transformace pole do funkce string implodují (array, symbol), například: $ margins1 = implodovat (‘, `$ style-> getInnerMargin ()) - ... algoritmus / user ...- $ margins2 = implodovala (` ‘, $ style-> getInnerMargin ()) umožňuje sloučit všechny polohy objektu v poloze řetězce.

Pak můžete provést srovnání PHP řetězec, a najednou: $ kontrola = strcmp ($ margins1, $ margins2) a ujistěte se, že algoritmus nebo uživatel, že se něco změnilo (nebo ne). Pokud srovnáváte obvyklým způsobem, musíte seřídit prvky pole. Trvá déle a vypadá těžší.

Objekty a řetězce

Ještě efektivnější využití PHP (porovnání řetězců) lze implementovat pomocí objektově orientovaných myšlenek.

Moderní myšlenka objektů naznačuje přítomnost jejich vlastností a metod. První jsou obvykle reprezentovány čísly, řetězci, maticemi a jinými objekty. Druhý často zahrnuje metody psaní (vložení) do řetězce a obnovení z řetězce (get).

Na rozdíl od polí objekt provádí práci s jeho vlastnostmi a interaguje s jinými objekty. Objekt je "kompetentní" v tom, co jeho vlastnosti mají skutečnou hodnotu pro algoritmus, program jako celek.

php porovnání řetězců

Tento okamžik dává základ a možnost zaznamenávat v řádku pouze potřebné informace a při obnově z linky obnovit všechny pracovní vlastnosti v nezbytném stavu. Obvykle v jakémkoli objektu existují informace nezbytné a pracovní (dočasné). Implementace této myšlenky umožňuje ušetřit nejen paměť, diskový prostor, záznamy databáze, ale také umožňuje porovnávat řetězce jednodušším a přesnějším způsobem.

Syntaxe a sémantika

PHP se dynamicky vyvíjí a jeho funkčnost jak v oblasti porovnávání řetězců, tak ve vztahu k jejich zpracování se neustále zlepšuje. Nic však nemůže zabránit vývojáři v přenesení těžiště do oblasti sémantiky.

Funkčnost je nepochybně dobrá, ale její použití lze přenést do sémantické části kódu do objektů. Když je algoritmus reprezentován jako systém interakce objektů, vypadá mnohem lépe než sekvence srovnání a akcí v přímém sériovém, klasickém stylu.

Sdílet na sociálních sítích:

Podobné
© 2021 nisfarm.ru