Vytvorte pole php z reťazca. PHP: polia na reťazec. Konvertujte reťazce na polia a naopak. Demontáž a opätovné skladanie reťazcov - validácia údajov

  • 03.11.2019
2,8 tis

Metóda PHP explode sa používa na rozdelenie reťazca na daný počet podreťazcov.

Syntax metódy

Príklad použitia metódy PHP explode:

$ array_name = rozložiť ($ oddeľovač, $ string_to_split, $ no_of_breaks)

Príklad použitia funkcie rozložiť na rozdelenie telefónneho čísla

V tomto príklade sme deklarovali reťazcovú premennú a priradili jej telefónne číslo v nasledujúcom formáte:

001-234-567678

Potom sme použili metódu explode na rozdelenie riadku pomocou spojovníka (pomlčky) ako oddeľovača. Vrátené pole reťazcov bolo priradené k poľu.

Potom sme použili slučku fogeach na zobrazenie hodnôt prvkov poľa, ktoré sú podreťazcami telefónneho čísla. Keďže parameter limitu nie je špecifikovaný, celé telefónne číslo bude rozdelené do troch podreťazcov:


Pozrite si ukážku a kód

Príklad s medzerou ako oddeľovačom

Tento príklad PHP rozloženia zalomenia riadkov používa ako oddeľovač medzeru. Vezmime si tento riadok ako príklad:

V príklade sa opäť nepoužíva limitný parameter. Po vytvorení reťazca sme použili metódu explode na jeho rozdelenie. Potom sme použili slučku fogeach na zobrazenie vrátených prvkov poľa.

Nakoniec sme použili funkciu count () na zobrazenie počtu podreťazcov v poli:


Pozrite si ukážku a kód

Príklad s limitným parametrom

Toto je príklad opísaný vyššie, okrem toho, že tu sme použili parameter limit na určenie počtu rozdelení na riadok. Nižšie je uvedený riadok, ktorý bol použitý:

Toto je podrobný návod, ktorý umožňuje rozdelenie reťazcov v PHP.

V príklade rozloženia PHP, keď sme použili medzeru ako oddeľovač, vrátilo sa iba 10 podreťazcov. Tentoraz bolo definovaných 5 oddielov pomocou parametra limit:


Pozrite si ukážku a kód

Demo stránka zobrazuje iba päť podreťazcov, pričom posledný obsahuje zvyšok reťazca. Celkový počet prvkov v poli je tiež 5, nie 10 ako vo vyššie uvedenom príklade.

Na čo slúži metóda výbuchu?

Výbuch ( Rozdelenie PHP) sa používa na rozdelenie daného reťazca. Povedzme, že webový formulár akceptuje telefónne číslo s predvoľbou krajiny a oblasti v nasledujúcom formáte:

001-234-567678

Musíme oddeliť kód krajiny a oblasti, ktoré sú oddelené pomlčkou. Na rozdelenie telefónneho čísla môžete po prijatí čísla ako vstupného parametra použiť rozložiť s oddeľovačom pomlčky (pomlčky).

Keďže explode vracia pole podreťazcov, metóda explode rozdelí číslo na nasledujúce pole prvkov:

  • Prvá položka = 001
  • Druhý prvok = 234
  • Tretí prvok = 567678

Ako používať funkciu PHP explode

Vo funkcii PHP explode je možné zadať tri parametre. Posledný je voliteľný, pretože môžete zadať počet oddielov ( maximálny počet podreťazcov) nie je potrebné.

Popis každého parametra:

$ array_name = rozložiť ($ oddeľovač, $ string_to_split, $ no_of_breaks)

  • $ Názov_pola je pole; pretože metóda explode vracia pole reťazcov získaných rozdelením reťazca;
  • $ delimiter - definuje oddeľovač. Na oddelenie telefónneho čísla sme použili „-“ ako oddeľovač.

Ako oddeľovač $ môžete použiť aj medzeru, čiarky alebo iné slová.

  • Ďalším parametrom je reťazec, ktorý sa má explodovať. Môže to byť reťazcová premenná, veta atď.;
  • Posledný parameter určuje maximálny počet podreťazcov alebo počet rozdelení na reťazec. Toto je voliteľný parameter.

Ak je limit rozloženého poľa PHP kladný, vrátené pole bude obsahovať maximálny počet prvkov, pričom posledný prvok bude obsahovať zvyšok reťazca.

Prevod údajov z jednej reprezentácie do druhej je populárny, často jediný mechanizmus na riešenie problému. Pole je jednoduchý prípad objektu. Reťazec je prirodzenou reprezentáciou informácií na prenos, spracovanie alebo ukladanie.

Skúsenosti a sémantika, implementované v PHP: polia, funkcie a syntaktické konštrukcie, umožňujú vytvárať optimálne riešenia na spracovanie informácií vo forme, v akej sú prezentované.

Informácie: znaky, reťazce a údaje

Vo svojej „čistej“ forme je informácia reťazec znakov, reč alebo sled signálov. V programovaní sa objavujú reťazce, polia a objekty - to sú varianty umelých inline konštrukcií. Čísla sú tiež reťazce, ale čísla, nie symboly.

PHP vám umožňuje konvertovať reťazec na pole mnohými rôznymi spôsobmi. Existujú dve špeciálne funkcie, ktoré to robia samostatne:

  • $ aArr = explodovať ("x", "reťazec");
  • $ aStr = implode ("y", $ aArr).

Prvá funkcia nájde oddeľovací znak "x" a rozdelí "reťazec" pozdĺž neho. Výsledné pole obsahuje presne taký počet prvkov (reťazcov), ktoré sú obsiahnuté medzi znakmi „x“. Symbol oddeľovača nemusí byť nevyhnutne klasický:

  • čiarka;
  • bod;
  • bodkočiarka.

Reťazec môžete rozdeliť podľa podreťazca alebo podľa špeciálnej kombinácie znakov.

Dĺžka reťazca je strlen () v PHP, dĺžka poľa je count (). V prvom prípade sa berie do úvahy počet znakov, v druhom prípade počet prvkov. Keďže oddeľovací znak nie je zahrnutý v prvkoch poľa, hodnota count () sa bude rovnať počtu oddeľovačov v konvertovanom reťazci mínus jeden.

Počas reverznej transformácie PHP sa polia skonvertujú na reťazec so znakom oddeľovača (môže byť prázdny) a všetky údaje (čísla a logické výrazy) sa zlúčia do jedného reťazca. Prvok poľa môže byť iné pole, ale programátor si musí dať na tento prípad obzvlášť pozor. Funkcia implode () nie je ani zďaleka rekurzívna.

V tomto príklade nie je problém konvertovať polia PHP na reťazec, pokiaľ medzi ich prvkami nie je žiadne iné pole. Pri konverzii asociatívnych prvkov sa kľúčové informácie stratia. Najmä prvky „slivka“ a „broskyňa“ budú zbavené kľúčov.

Oddeľovače údajov a kľúče

Za oddeľovače nepovažujte bodky, čiarky, dvojbodky atď.. Toto je špeciálny prípad oddeľovania údajov od seba. Pri transformácii reťazca v PHP nebude fungovať viacrozmerné pole a asociatívne indexy nebudú mať odkiaľ pochádzať.

Pri analýze reťazca pomocou oddeľovača vždy získate reťazce. Ale to nie je dôvod, aby ste sa tam zastavili. Po analýze jedného riadku na jeho základné prvky môžete ísť ďalej.

Bol tam napríklad odsek, ktorý obsahuje niekoľko viet (oddeľovač „.“ je bodka), vo vete je niekoľko fráz (oddeľovače „,“ je čiarka, „;“ je bodkočiarka a „.“ je bodka), fráza obsahuje slová ( oddeľovač "" - medzera, "," - čiarka, ";" - bodkočiarka a "." - bodka).

S takouto analýzou v PHP sa ľahko ukáže viacrozmerné pole, ale algoritmus bude veľmi škaredý: počet oddeľovačov rastie a absencia spojenia medzi susednými odsekmi zaručí duplikáciu viet, fráz a slov.

Analýzou reťazcov môžete okamžite previesť sekvencie čísel na čísla a booleovské hodnoty na true a false. Ale toto je špecifické, kľúčové informácie sa aj tak neobjavia, pretože kľúčom je význam, automaticky sa dá vytvoriť len číselný index.

Komplexné separátory

Výstup poľa PHP do reťazca sa často používa na obchodné účely. Konfiguračný súbor sa tradične píše riadok po riadku a názov je oddelený od hodnoty symbolom rovná sa alebo dvojbodkou.

S týmto riešením sa výstup poľa v PHP vykoná do súboru, automaticky sa získa oddelenie reťazcov a so spätným rozpoznávaním sa ľahko získajú asociatívne polia.

Prečítaním súboru programátor získa riadky a rozdelením každého riadku „=“ alebo „:“ získa názov a jeho význam. Veľmi populárna manipulácia, aj keď modernejšie je používať zápis XML na jednoduchom základe, že okrem mien a hodnôt možno ukladať a obnovovať aj ďalšie údaje, napríklad atribúty premenných.

V príklade s odsekmi (napríklad prirodzený text na vytvorenie slovníka alebo výsledok analýzy na vytvorenie vzorky údajov) nie je dôležitý konkrétny postup prevodu reťazca na pole, ale komplexné riešenie pre všetkých odseky alebo bloky informácií.

Takáto úloha si zvyčajne vyžiada opačné riešenie, keď vygenerovanú „množinu“ údajov bude potrebné použiť na vyhľadávanie informácií v nej alebo na jej opätovné zostavenie do reťazca.

Demontáž a opätovné skladanie reťazcov - validácia údajov

V PHP: polia na reťazec je presné riešenie. Ak by počiatočná informácia mohla obsahovať chyby syntaxe, medzery navyše, nesprávne znaky, potom sa počas analýzy nevyskytnú. Výsledok transformácie počiatočných informácií podľa nepísaných zákonov programovania sa vykonáva prísne formálne a výsledok bude jasne rozložený do políc.

Opačný postup vytvorí správny zdrojový reťazec. Ak porovnáme množstvo počiatočných informácií a výsledok inverznej transformácie, potom môžeme vyvodiť závery o tom, kde došlo k chybám alebo strate údajov. V PHP môže dĺžka poľa v kontexte pôvodnej dĺžky reťazca umožniť vyvodenie požadovaných záverov.

Čas, dátum a štítky udalostí

Pri vývoji kritických projektov, pri vytváraní riadiacich objektov, napríklad času alebo udalostí, je reťazec jednou reprezentáciou údajov a pole druhou. Ale v aplikácii sú ekvivalentné.

Keď potrebujete vykonať matematické alebo logické výpočty, programátor manipuluje s poľom, keď potrebujete uložiť dáta, použije verziu s malými písmenami.

Indexy prístupu k poliam databázy sú skutočnou praxou spolupráce MySQL a PHP, polia na riadok = jeden index v riadkoch niekoľkých databázových tabuliek. Ak databáza obsahuje tucet tabuliek a v každej tabuľke možno riadky vybrať kombináciou názvov (hodnôt) v určitej kombinácii, potom po vytvorení polí prístupu k riadkom k nim môžete následne získať prístup pomocou indexu. algoritmus tvorby, a nie vyhľadávaním v databáze ...

Konverziu poľa na reťazec možno považovať za algoritmus na vytvorenie požadovaného indexu, pričom obsah poľa sa vytvára pod kontrolou úplne iných udalostí alebo akcií používateľa.

Zlúčenie polí

Funkcie PHP vám umožňujú voľne manipulovať s poľami. Vždy však existujú úlohy, ako urobiť výber jedinečných údajov alebo nájsť údaje v poli.

Prvý problém sa rieši iteratívne: pole (alebo niekoľko polí) sa iteruje a vytvorí sa reťazec jedinečných hodnôt - zrejmé riešenie, ale nie najefektívnejšie.

Hľadanie údajov v poli je tiež cyklus a ak existuje veľa prvkov, cyklus bude dosť dlhý a zaberie značnú dobu. Môžete poslať pole do reťazca a použiť funkciu strpos () na nájdenie výskytu požadovaného prvku, čo však spôsobí problém s detekciou chybného výskytu.

Hľadalo sa napríklad slovo „podnos“, no jeho výskyt sa našiel v slove „kladivo“. Takýchto chýb sa môžete zbaviť, ak sa všetky prvky poľa zlúčia do reťazca pomocou špeciálneho oddeľovača, ktorý zabráni nejednoznačnosti.

Ak riadok obsahuje "[zásobník]" a "[kladivo]", potom s vyhľadávaním nebudú žiadne problémy.

Neexistuje však žiadna záruka, že funkcia strpos () funguje rýchlejšie ako slučka iterujúca prvky poľa na skutočných objemoch údajov.

Najlepším riešením je, keď pole alebo reťazec robí správnu vec sám. Ak skomplikujeme polia a zjednodušíme reťazce, pretože prvým je špeciálny prípad objektu a druhým je tradičná serializácia, potom si každý urobí svoje.

V správnom čase je objekt poľom, a keď je potrebný reťazec, bude to reťazec. V tomto prípade absolútne nie je potrebné mať v objekte súčasne pole aj reťazec. Je možné vybudovať unikátnu dátovú štruktúru s rýchlym prístupom. A presuňte logické "pole" a "reťazec" do metód objektu.

Objektovo orientovaný prístup zjednodušuje riešenie mnohých úloh spracovania informácií o riadkoch, umožňuje nezameriavať sa na polia, slučky a funkciu spracovania riadkov samotného PHP.

Reťazce aj polia sú skutočným významom reality, rozsahu, úlohy. Takáto úloha neexistuje – posielať polia do reťazca do PHP. Existuje však úloha získať odsek (vetu, frázu, slovo, číslo ...) na základe výsledkov získaných v predchádzajúcom algoritme.

Predchádzajúci algoritmus má význam a presné vyjadrenie tohto významu je obsiahnuté v poli. Ďalšou fázou algoritmu je transformácia významu do inej reprezentácie, vhodnej na ďalšie spracovanie alebo aplikáciu.

Ak vezmeme do úvahy algoritmus ako dynamiku významových a dátových transformácií, je možné vytvárať spoľahlivé, zrozumiteľné a efektívne transformácie.

Na konverziu reťazca na pole pomocou oddeľovača môžete použiť funkciu explode ().
Požadované parametre: oddeľovač a reťazec.

// Príklad 1 $ pizza = "kus1 kus2 kus3 kus4 kus5 kus6"; $ kusov = explodovať ("", $ pizza); echo $ kusov; // kus1 echo $ kusov; // kus2 // Príklad 2 $ data = "foo: *: 1023: 1000 :: / home / foo: / bin / sh"; zoznam ($ user, $ pass, $ uid, $ gid, $ gecos, $ home, $ shell) = explode (":", $ data); echo $ užívateľ; // foo echo $ pass; // *

Rozdeľte reťazec do poľa podľa regulárneho výrazu

Ak možnosti explode () nestačia, môžete použiť výkonnejšiu funkciu: preg_split (). Umožňuje vám rozdeliť reťazec nie podľa pevnej sady znakov, ale podľa

Príklad z dokumentácie:

// rozdeľte reťazec ľubovoľným počtom čiarok a medzier, // ktoré zahŕňajú kľúčové slová "", \ r, \ t, \ n a \ f $ = preg_split ("/ [\ s,] + /", " hypertextový jazyk, programovanie "); print_r (kľúčové slová $);

výsledok:

/ * Pole (=> hypertext => jazyk => programovanie) * /

Previesť reťazec na pole podľa počtu znakov

Funkcia str_split () konvertuje reťazec na pole a rozdelí ho na prvky so zadaným počtom znakov. Chcete vedieť, ako ho používať? Pozrite si dokumentáciu.

$ str = "Ahoj priateľ"; $ arr2 = str_split ($ str, 3); print_r ($ arr2)

Ak potrebujete previesť pole php na reťazec, existuje na to niekoľko nástrojov. Použitie tohto alebo toho nástroja závisí od vašich cieľov.

1. Funkcia implode ().

S jeho pomocou môžete „prilepiť“ prvky poľa do reťazca cez ľubovoľný oddeľovač. Čítajte viac: implodujte
Príklad:

Echo implode ("|", pole (1, 2, 3)); // vypíše riadok: 1 | 2 | 3

Táto funkcia má antagonistu explode (), ktorý naopak rozdeľuje reťazec separátorom na prvky poľa. Čítajte viac: explodovať

2. Funkcia serializácie ().

Hlavnou úlohou funkcie je transformovať premennú (v našom prípade pole) do stavu vhodného na uloženie.
Používa sa na uloženie poľa do reťazca na neskoršiu konverziu späť na pole. Pole môžete uložiť do súboru alebo databázy a potom ho obnoviť pri ďalšom spustení skriptu.
Prečítajte si viac: serializovať

$ pole = pole ("1" =>; "prvok 1", "2" => "prvok 2", "3" => "prvok 3"); $ reťazec = serializovať (pole $); echo $ reťazec; // vypíše reťazec: a: 3: (i: 1; s: 6: "prvok 1"; i: 2; s: 6: "prvok 2"; i: 3; s: 7: "prvok 3" ;)

Potom z tohto riadku môžete znova získať pole:

$ pole = unserialize ($ reťazec);

3. Funkcia json_encode ()

Vráti JSON reprezentáciu údajov. Môžete si prečítať, čo to je.
V našom prípade táto funkcia pripomína serializáciu, no JSON slúži najmä na prenos dát. Tento formát budete musieť použiť na komunikáciu s javascriptom na frontende. Ďalšie podrobnosti: json_encode

$ pole = pole (1 => "jeden", 2 => "dva",); $ json = json_encode (pole $); echo $ json; // ("1": "jeden", "2": "dva")

Reverzná funkcia json_decode () vráti objekt typu stdClass, ak je druhý parameter funkcie nepravdivý. Alebo vráti asociatívne pole, ak zadáte hodnotu true ako druhý parameter. Podrobnosti tu.