PHP praxe: Srovnání linek

PHP je dobře zaměřeno na zpracování informací. Jazyková syntaxe představuje plně funkční sada porovnávacích funkcí, zpracování řádků a porovnávací operátory.

Libovolný algoritmus je pořadí voleb a akcí. Ale než se rozhodnete, musíte něco něco srovnat. Linka je nejsilnější, efektivní a praktický mechanismus pro správu algoritmu. Řádky představují údaje. A data jsou hlavním předmětem "starosti" nějakého algoritmu.

Normální logika "porovnávací akce"

Jazyk dynamického psaní obecně neznamená žádné zvláštní nesrovnalosti v datech, například v PHP, porovnání řetězce a číslo se mírně liší. Číslo je také řetězec obsahující pouze čísla, bodku a žádný znak, který se nepoužívá k reprezentaci čísla v jakékoli formě (matematické notace).


V případě obsahu se číslo automatu spojuje s čárou bez nadbytečných otázek a bez skrytých chyb, i když funkce gettype () udává "integer" nebo "double".
Existuje však rozdíl mezi použitím is_int () a is_numeric (). První z nich udává pravdu, když je parametr pouze celé číslo, druhá v případě číselného nebo číselného řetězce (proměnná má typ "řetězec", ale obsahuje vše, co poskytuje matematická notace). Tento jednoduchý příklad je dobrým příkladem, stejně jako v PHP, operátoři porovnávání linek ('==', '===', '! =',) Může 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. InV extrémním případě to bude prázdná čára.


Na základě výše uvedeného srovnání PHP řetězec je nejoblíbenější. Co si vybrat, rozhodněte se o vývojáři. K regulárním výrazům je k dispozici mnoho možností.

Omezení dostupných funkční srovnání

PHP linie dvou dobré „je“ funkce strpos () - nejlevnější, pravou a praktickou možnost. Pokud je výsledek číslem funkce, to je jednoznačně jeden řádek do druhé nebo jedna část do druhého. Radikálně opačný, ale také naprosto správný přístup - pomocí regulárních výrazů.
V případě, že volání $ cResult = scCheckFileName ($ CSTR) dá za 'pravdivé', a proto je řada se jmenuje vordivskoho souboru. Bude to jen jedna verze příponou „.docx“ a žádné znaky v názvu, jen písmena, čísla a symboly ‚_‘, ‚-‘. Tuto funkci lze snadno recyklovat do jiných typů souborů: $ cPtr = ‚/^([a-zA-Z0-9-_]{4239}).(html|js|css|png|jpg|docx|txt){1 } $ /u '. Tato volba kontroluje linka rozšiřuje rozsah zatížení (např PHP porovnávání řetězců používaného „nahrát soubory na server, bez možností vstupu chyby) v html, js, css, použijte strpos () a preg_match () - extrémy mají. přímo souvisí s otázkou doby porovnání Ale otázka algoritmu - je použití kombinace stylů, s využitím všech možností, aby se dosáhlo spolehlivé a správné výsledky

Funkční PHP:.. srovnání string

ve srovnání Arsenal jazykové linky - je nejen funkční ystoho srovnání, ale kombinace vyhledávání či výměnu okamžitě. Žádná akce by měl být vždy stejný srovnání,jelikož tento nemusí nutně vést ke změně žádné linie. Často je třeba vybrat jednu nebo jinou větev algoritmu.
Obvyklá verze PHP: porovnání řádků je provedeno funkcí int strcmp (s1 s2). Výsledek funkce:
  • 0 - řádky jsou stejné;
  • -1 - první řádek je menší než druhý;
  • 1 - první řádek je více než druhý.
  • V praxi to znamená, že první řádek je ve druhém, ze kterého se rozhoduje funkce PHP (line comparison). Omezená verze strpos (), protože ve druhém případě můžete poznat vstupní pozici. Funkce strcmp () rozlišuje velká a malá písmena. Pokud chcete porovnat řetězce bez zohlednění znakového případu, PHP nabízí strcasecmp (). Syntaxe je podobná. V praxi často potřebujete pracovat s celou čárou, ale pouze s její částí. Chcete-li to provést, soubor funkcí PHP (porovnání řetězců) obsahuje strncmp (s1 s2 N). Třetí parametr označuje, že porovnání je pouze N-byte. Výsledek je podobný strcmp ().

    Pole, řádky a srovnání

    Údaje jsou téměř vždy reprezentovány řetězci. Pokud uvažujeme o poli, objektech nebo informačních strukturách, jsou to jen různé varianty kombinace jednodušších struktur štrajku.
    Lineární pole a řádky mohou být reprezentovány doplňkovým způsobem. Transformace pole do řetězce je funkce implode (pole, symbol), například: $ margins1 = implode (',', $ style- & gt; getInnerMargin ()); algoritmus /uživatelská práce; $ margins2 = implode (',', $ style- & gt; getInnerMargin ()) umožňuje sloučit všechny pozice objektu v řádkové položce. Pak můžete provést PHP-line porovnání a najednou: $ check = strcmp ($ margins1 $ margins2) a ujistěte se, že algoritmus nebouživatel něco změnil (nebo ne). Pokud provedete srovnání obvyklým způsobem, musíte procházet elementy pole. To se děje déle a vypadá těžší.

    Objekty a řetězce

    Ještě mnohem velkolepější využití PHP (line comparison) může být implementováno pomocí objektově orientovaných myšlenek. Moderní pohled na objekty předpokládá přítomnost jejich vlastností a metod. První jsou obvykle reprezentovány čísly, řádky, maticemi a dalšími objekty. Druhý typ často obsahuje metody zápisu (vložení) do řetězce a obnovení z řádku (get).
    Na rozdíl od polí, objekt dělá svou práci se svými vlastnostmi a interaguje s jinými objekty. Objekt je "kompetentní" tím, že jeho vlastnosti jsou pro algoritmus, program jako celek skutečné.
    Tento okamžik poskytuje základ a schopnost záznamu záznamu v řádku pouze potřebných informací a při obnově z řetězce obnoví všechny pracovní vlastnosti do požadovaného stavu. Obvykle v jakémkoli objektu existují významné a pracovní (dočasné) informace. Uvědomení si takového nápadu umožňuje ušetřit nejen paměť, místo na disku, záznamy databáze, ale také umožňuje porovnávat řetězce jednoduššími a přesnějšími prostředky.

    Syntaxe a sémantika

    PHP se dynamicky vyvíjí a jeho funkce se neustále zlepšuje jak z hlediska porovnání linek, tak z hlediska jejich zpracování. Nic však nemůže vývojářovi zabránit v přesunu těžiště do sémantiky. Nepochybně dobrý funkční, ale jeho použití může být přeneseno do obsahu části kódu,objekty Když je algoritmus reprezentován jako systém interakcí objektů, vypadá mnohem lépe než sekvence porovnání a akcí v přímém sekvenčním, klasickém stylu.

    Související publikace