Metoda PHP explode pentru împărțirea unui șir cu trei exemple. Metoda PHP explode pentru împărțirea unui șir cu trei exemple Delimitatori de date și chei

Convertirea datelor de la o reprezentare la alta este un mecanism popular, adesea singurul, pentru rezolvarea unei probleme. Un tablou este un caz simplu al unui obiect. Un șir este o reprezentare naturală a informațiilor pentru transmitere, procesare sau stocare.

Experiența și semantica implementate în PHP: tablourile, funcțiile și structurile sintactice fac posibilă crearea de soluții optime pentru procesarea informațiilor așa cum sunt prezentate.

Informații: caractere, șiruri și date

În forma sa „pură”, informația este un șir de caractere, vorbire sau o secvență de semnale. Șirurile, matricele și obiectele apar în programare - acestea sunt variante ale construcțiilor de șiruri artificiale. Numerele sunt, de asemenea, șiruri, dar numere, nu simboluri.

PHP vă permite să convertiți un șir într-o matrice în multe moduri diferite. Există două funcții speciale care fac acest lucru „pe cont propriu”:

  • $aArr = explode("x", "șir");
  • $aStr = implode("y", $aArr).

Prima funcție găsește caracterul delimitator „x” și împarte șirul „șir” folosindu-l. Matricea rezultată conține exact numărul de elemente (linii) care sunt cuprinse între caracterele „x”. Simbolul separatorului poate să nu fie neapărat cel clasic:

  • virgulă;
  • punct;
  • punct şi virgulă.

Puteți împărți un șir după subșir sau printr-o combinație specială de caractere.

Lungimea șirului este strlen() în PHP, lungimea matricei este count(). În primul caz, se numără numărul de caractere, în al doilea caz, numărul de elemente. Deoarece caracterul delimitator nu este inclus în elementele matricei, valoarea lui count() va fi egală cu numărul delimitatorilor din șirul convertit minus unu.

În transformarea inversă PHP, matricele în șir sunt convertite cu un caracter delimitator (poate fi gol), iar toate datele (numerele și expresiile booleene) sunt îmbinate într-un șir. Un element al unui tablou poate fi un alt tablou, dar programatorul trebuie să se ocupe de acest caz în mod specific. Funcția implode() este departe de a fi recursivă.

În acest exemplu, nu există nicio problemă la conversia matricelor PHP într-un șir atâta timp cât nu există nicio altă matrice printre elementele lor. Când elementele asociative sunt convertite, informațiile cheie se pierd. În special, elementele „prune” și „piersică” vor fi îndepărtate de cheile lor.

Delimitatori de date și chei

Nu luați în considerare punctele, virgulele, două puncte etc. ca delimitatori. Acesta este un caz special de separare a datelor unul de celălalt. La transformarea unui șir în PHP, o matrice multidimensională nu va funcționa, iar indecșii asociativi nu vor avea de unde să vină.

Analizarea unui șir prin delimitator produce întotdeauna șiruri. Dar acesta nu este un motiv să ne oprim aici. După ce ați analizat o linie în elementele sale componente, puteți continua.

De exemplu, a existat un paragraf cu mai multe propoziții (separator "." - punct), mai multe fraze în propoziție (separatoare "," - virgulă, ";" - punct și virgulă și "." - punct), fraza conține cuvinte ( delimitator " " - spațiu, "," - virgulă, ";" - punct și virgulă "."

Cu această dezasamblare în PHP se poate obține cu ușurință o matrice multidimensională, dar algoritmul va fi foarte urât: numărul de separatori crește, iar lipsa conexiunii dintre paragrafele alăturate este garantată pentru a asigura duplicarea propozițiilor, frazelor și cuvintelor.

Prin analizarea șirurilor, puteți converti imediat secvențele de cifre în numere, iar valorile logice în adevărat și fals. Dar aceasta este, în special, informațiile cheie încă nu vor apărea, deoarece cheia este sensul, doar un index numeric poate fi creat automat.

Separatoare complexe

Imprimarea unei matrice PHP într-un șir este adesea folosită în scopuri utilitare. Un fișier de configurare este în mod tradițional scris linie cu linie, cu un simbol egal sau două puncte care separă numele de valoare.

Cu această soluție, ieșirea unui tablou în PHP se face într-un fișier, se obține automat diviziunea șirurilor, iar cu recunoașterea inversă se obțin cu ușurință tablouri asociative.

Citind fișierul, programatorul primește liniile, iar prin ruperea fiecărei linii cu „=" sau „:”, el obține numele și valoarea acesteia. O manipulare foarte populară, deși este mai modern să folosiți notația XML din simplul motiv că, pe lângă nume și valori, pot fi stocate și restaurate date suplimentare, de exemplu, atribute variabile.

În exemplul cu paragrafe (de exemplu, text natural pentru a construi un dicționar sau rezultatul analizei pentru a crea un eșantion de date), ceea ce este important nu este procedura specifică pentru conversia unui șir într-o matrice, ci o soluție cuprinzătoare pentru toate paragrafele sau blocuri de informații.

De obicei, o astfel de sarcină va necesita o soluție inversă, atunci când „setul” de date generat va trebui utilizat pentru a căuta informații în el sau pentru a le asambla înapoi într-un șir.

Dezasamblarea și reasamblarea șirurilor - verificarea datelor

În PHP: arrays to string este soluția exactă. Dacă informațiile sursă ar putea avea erori de sintaxă, spații suplimentare sau simboluri incorecte, atunci acestea nu vor fi acolo în timpul analizării. Rezultatul transformării informațiilor inițiale în conformitate cu legile nescrise ale programării se realizează strict formal, iar rezultatul va fi expus în mod clar pe rafturi.

Procedura inversă va produce șirul sursă corect. Dacă comparați cantitatea de informații sursă și rezultatul transformării inverse, puteți trage concluzii despre unde s-au făcut erori sau s-a produs pierderea datelor. În PHP, lungimea unui tablou în contextul lungimii inițiale a șirului ne poate permite să tragem concluziile necesare.

Etichete de oră, dată și eveniment

În dezvoltarea proiectelor critice, atunci când se creează obiecte de control, de exemplu, timp sau evenimente, un rând este o reprezentare a datelor, iar o matrice este alta. Dar în aplicare sunt echivalente.

Când este necesar să se efectueze calcule matematice sau logice, programatorul manipulează matricea când este necesar să se stocheze date, el folosește versiunea șir.

Indecși de acces la câmpurile bazei de date - o practică reală a acțiunii comune a MySQL și PHP, matrice într-un rând = un index pe rândurile mai multor tabele de baze de date. Dacă baza de date conține o duzină de tabele, iar în fiecare tabel rândurile pot fi selectate printr-o combinație de nume (valori) într-o anumită combinație, atunci după ce au creat matrice de acces la rând, puteți avea acces ulterior la ele folosind un algoritm de formare a indexului, si nu cautand in baza de date .

Convertirea unui tablou într-un șir poate fi considerată ca un algoritm pentru formarea indexului dorit, în timp ce conținutul matricei este format sub controlul unor evenimente sau acțiuni ale utilizatorului complet diferite.

Îmbinarea matricelor

Funcțiile PHP vă permit să manipulați liber matrice. Dar întotdeauna apar probleme pentru a selecta date unice sau a găsi date într-o matrice.

Prima problemă este rezolvată iterativ: o matrice (sau mai multe matrice) este iterată și se formează un șir de valori unice - o soluție evidentă, dar nu cea mai eficientă.

Găsirea datelor într-o matrice este, de asemenea, un ciclu, iar dacă există o mulțime de elemente, atunci ciclul va fi destul de lung și va dura o perioadă de timp vizibilă. Este posibil să trimiteți o matrice către un șir și să utilizați funcția strpos() pentru a găsi o apariție a elementului dorit, dar acest lucru va introduce problema detectării unei apariții eronate.

De exemplu, cuvântul „tavă” a fost căutat, iar apariția lui a fost găsită în cuvântul „ciocan”. Puteți scăpa de astfel de erori dacă îmbinați toate elementele matricei într-un șir folosind un separator special, ceea ce va evita ambiguitatea.

Dacă linia conține „[tava]” și „[ciocanul]”, atunci nu vor fi probleme cu căutarea.

Dar nu există nicio garanție că, pe cantități reale de date, funcția strpos() va funcționa mai rapid decât o buclă care iterează peste elementele matricei.

Cea mai bună soluție este ca matricea sau șirul să facă singur ceea ce trebuie. Dacă complicăm oarecum matricele și simplificăm șirurile de caractere, deoarece primele sunt un caz special al unui obiect, iar cele din urmă sunt serializarea tradițională, atunci fiecare își va face treaba lui.

La momentul potrivit, obiectul este o matrice, iar atunci când este nevoie de un șir, acesta va fi un șir. În acest caz, nu este absolut necesar să aveți în obiect atât o matrice, cât și un șir în același timp. Puteți construi o structură de date unică cu acces rapid. Și puneți logica „matrice” și „șir” în metodele obiect.

Abordarea orientată pe obiect simplifică rezolvarea multor probleme de procesare a informațiilor șiruri, vă permite să nu vă concentrați pe matrice, bucle și pe funcția de procesare a șirurilor de caractere PHP în sine.

Atât șirurile, cât și matricele sunt semnificația reală a realității, aplicației, sarcinii. Nu există o astfel de sarcină - trimiterea de matrice în șiruri în PHP. Dar există o sarcină de a obține un paragraf (propoziție, frază, cuvânt, număr...) pe baza rezultatelor obținute în algoritmul anterior.

Algoritmul anterior poartă o semnificație, iar expresia exactă a acestui sens este conținută în matrice. Următoarea etapă a algoritmului este transformarea sensului într-o altă reprezentare, convenabilă pentru prelucrare sau aplicare ulterioară.

Privind algoritmul ca dinamica semnificației și transformării datelor, este posibil să se formeze transformări fiabile, ușor de înțeles și eficiente.

2,8K

Metoda PHP explode este folosită pentru a împărți un șir într-un număr specificat de subșiruri.

Sintaxa metodei

Un exemplu de utilizare a metodei PHP explode:

$array_name = explode ($delimitator, $string_to_split, $no_of_breaks)

Exemplu de utilizare a explodei pentru a împărți un număr de telefon

În acest exemplu, am declarat o variabilă șir și i-am atribuit un număr de telefon în următorul format:

001-234-567678

După aceea, am folosit metoda explode pentru a împărți șirul folosind o cratimă (liniuță) ca delimitator. Matricea de șiruri de caractere returnată este atribuită matricei.

Am folosit apoi o buclă fogeach pentru a afișa valorile elementelor matricei care sunt subșiruri ale numărului de telefon. Deoarece parametrul limită nu este specificat, întregul număr de telefon va fi împărțit în trei subșiruri:


Vedeți demonstrația și codul

Exemplu cu spațiu ca delimitator

Acest exemplu de ruptură de linie cu explozie PHP folosește un spațiu ca delimitator. De exemplu, să luăm această linie:

Exemplul din nou nu folosește parametrul limită. După ce am creat șirul, am folosit metoda explode pentru a-l împărți. Apoi am folosit o buclă fogeach pentru a afișa elementele matricei returnate.

În cele din urmă, am folosit funcția count() pentru a afișa numărul de subșiruri din matrice:


Vedeți demonstrația și codul

Exemplu cu parametrul limită

Acesta este exemplul descris mai sus, cu excepția cazului în care am folosit parametrul limită pentru a specifica numărul de împărțiri pe linie. Mai jos este linia care a fost folosită:

Acesta este un tutorial explode care permite împărțirea șirurilor în PHP.

În exemplul PHP explode, când am folosit un spațiu ca delimitator, au fost returnate doar 10 subșiruri. De această dată, au fost definite 5 împărțiri folosind parametrul limită:


Vedeți demonstrația și codul

Pagina demo afișează doar cinci subșiruri, ultimul incluzând restul șirului. Numărul total de elemente ale matricei este de asemenea 5, nu 10 ca în exemplul de mai sus.

Pentru ce este folosită metoda de explozie?

Metoda exploda ( PHP împărțit) este folosit pentru a împărți un șir dat. Să presupunem că un formular web acceptă un număr de telefon cu un prefix de țară și zonă în următorul format:

001-234-567678

Trebuie să separăm țara și prefixul zonal, care sunt separate printr-o cratimă. Pentru a împărți un număr de telefon, puteți folosi explode cu un delimitator cu cratima (liniuță) după ce ați acceptat numărul ca parametru de intrare.

Deoarece explode returnează o matrice de subșiruri, metoda explode va împărți numărul în următoarea matrice de elemente:

  • Primul element = 001
  • Al doilea element = 234
  • Al treilea element = 567678

Cum se utilizează funcția PHP explode

Există trei parametri pe care îi puteți specifica în funcția PHP explode. Ultimul dintre ele este opțional, deoarece specificați numărul de partiții ( numărul maxim de subșiruri) nu este necesar.

Descrierea fiecărui parametru:

$array_name = explode ($delimitator, $string_to_split, $no_of_breaks)

  • $Array_name - matrice; deoarece metoda explode returnează o matrice de șiruri obținute prin împărțirea șirului;
  • $delimiter - definește delimitatorul. Am folosit „-” ca separator pentru a sparge numărul de telefon.

De asemenea, puteți utiliza spațiu, virgule sau alte cuvinte ca $delimiter.

  • Următorul parametru este șirul care trebuie împărțit folosind metoda explode. Aceasta ar putea fi o variabilă șir, o clauză etc.;
  • Ultimul parametru specifică numărul maxim de subșiruri sau numărul de împărțiri pe linie. Acesta este un parametru opțional.

În explode array PHP, dacă argumentul limită este pozitiv, matricea returnată va conține numărul maxim de elemente, ultimul element conținând restul șirului.

Dacă trebuie să convertiți o matrice PHP într-un șir, există mai multe instrumente pentru aceasta. Utilizarea unui anumit instrument depinde de obiectivele tale.

1. Funcția Implode().

Cu ajutorul acestuia, puteți „lipi” elemente de matrice într-un șir, prin orice separator. Citește mai mult: implozie
Exemplu:

Echo implode("|", matrice(1, 2, 3)); // va produce linia: 1|2|3

Această funcție are un antagonist, explode(), care, dimpotrivă, împarte șirul de la delimitator în elemente de matrice. Citește mai mult: exploda

2. Funcția Serialize().

Sarcina principală a funcției este de a transforma o variabilă (în cazul nostru, o matrice) într-o stare adecvată pentru stocare.
Este folosit pentru a salva o matrice într-un șir și apoi a o converti înapoi într-o matrice. Puteți salva matricea într-un fișier sau bază de date și apoi o puteți restaura data viitoare când rulați scriptul.
Citește mai mult: serialize

$array = array("1" =>; "elem 1", "2" => "elem 2", "3" => "elem 3"); $șir = serialize($array); echo $șir; // va produce linia: a:3:(i:1;s:6:"elem 1";i:2;s:6:"elem 2";i:3;s:7:"elem 3" ;)

Apoi, din această linie, puteți obține din nou matricea:

$array = unserialize($string);

3. funcția json_encode().

Returnează o reprezentare JSON a datelor. Puteți citi despre ce este vorba.
În cazul nostru, această funcție seamănă cu serializarea, dar JSON este folosit în principal pentru transferul de date. Va trebui să utilizați acest format pentru a face schimb de date cu javascript pe front-end. Mai multe detalii: json_encode

$array = array(1 => „unu”, 2 => „două”,); $json = json_encode($array); echo $json; // ("1":"unul","2":"două")

Funcția de apel invers json_decode() va returna un obiect de tip stdClass dacă al doilea parametru al funcției este fals. Sau va returna o matrice asociativă dacă true este trecut ca al doilea parametru. Detalii aici.

Pentru a converti un șir într-o matrice prin delimitator, puteți utiliza funcția explode().
Parametri necesari: delimitator și șir.

// Exemplu 1 $pizza = "bucata1 bucata2 bucata3 bucata4 bucata5 bucata6"; $bucăți = explode(" ", $pizza); eco $bucăți; // piece1 echo $bucăți; // piece2 // Exemplul 2 $date = "foo:*:1023:1000::/home/foo:/bin/sh"; list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $date); echo $utilizator; // foo echo $trece; // *

Împărțiți șirul în matrice folosind expresia regulată

Dacă explode() nu este suficient, puteți folosi o funcție mai puternică: preg_split(). Vă permite să împărțiți un șir nu după un set fix de caractere, ci după

Exemplu din documentație:

//împărțiți șirul la un număr arbitrar de virgule și spații albe, //care includ " ", \r, \t, \n și \f $keywords = preg_split("/[\s,]+/", " limbaj hipertext, programare"); print_r($cuvinte cheie);

Rezultat:

/* Matrice ( => hypertext => limba => programare) */

Convertiți șirul în matrice după numărul de caractere

Funcția str_split() convertește un șir într-o matrice, împărțindu-l în elemente cu un număr specificat de caractere. Vrei să știi cum să-l folosești? Consultați documentația.

$str = "Bună ziua, prietene"; $arr2 = str_split($str, 3); print_r($arr2)