internetul Windows. Android

Rânduri divizate. PHP explodează metoda pentru împărțirea unui șir cu trei exemple de șir de partiționare PHP

Pentru a converti un șir la o matrice cu separator, puteți utiliza funcția Explode ()
Parametrii necesari: separator și șir.

// Exemplul 1 $ pizza \u003d "bucată1 bucată2 bucată3 bucată4 bucată5 bucată6"; $ Bucăți \u003d explodează ("", $ pizza); Echo $ bucăți; // piesă1 piese de tip echo; // bucată2 // exemplu $ 2 Data \u003d "Foo: *: 1023: 1000 :: / home / foo: / bin / sh"; Lista ($ utilizator, $ pass, $ uid, $ gid, $ gosos, $ home, $ shell) \u003d Explode (":", $ date); ECHO $ \u200b\u200butilizator; // Foo Echo $ trece; // *

Rândul împărțit pe o matrice prin expresie regulată

Dacă capabilitățile de explozie () nu sunt suficiente, puteți utiliza o caracteristică mai puternică: preg_split (). Vă permite să împărțiți șirul nu pentru un set fix de caractere, ci pentru

Exemplu din documentație:

// vinde un șir de-a lungul unui număr arbitrar de virgule și caractere spațiale, // care includ ", \\ r, \\ t, \\ n și \\ f $ $ cuvinte cheie \u003d preg_split (" / [[\\ s,] + / "", hypertext Limba, programare "); Print_r (cuvinte cheie $);

Rezultat:

/ * Array (\u003d\u003e hypertext \u003d\u003e Limba \u003d\u003e Programare) * /

Conversia unui șir într-o matrice cu numărul de caractere

Funcția STR_SPLIT () convertește un șir într-o serie, spargându-l la elemente cu un număr dat de caractere. Vrei să știi cum să o folosești? Urmăriți documentația.

$ str \u003d "salut prieten"; $ arr2 \u003d str_split ($ str, 3); Print_r ($ arr2)

arrays Split Explode (9)

Ce încerci să obții? Puteți accesa simbolurile din șir ca matrice:

$ s \u003d "abcd"; Echo $ s;

imprimări " a. "

Am un șir, cum ar fi:

Și trebuie să împărțiți fiecare caracter într-o matrice.

Eu, am încercat:

Explodează ("", "123545789");

Dar mi-a dat evident: AVERTISMENT: nici un delimitator definit în explozie) ..

Cum pot înțelege asta? Nu văd nici o metodă, mai ales o funcție

Incearca asta:

$ str \u003d "salut prieten"; $ Arr1 \u003d str_split ($ str); $ arr2 \u003d str_split ($ str, 3); Print_r ($ arr1); Print_r ($ arr2);

Exemplul de mai sus afișează:

Array (\u003d\u003e h \u003d\u003e o \u003d\u003e \u003d\u003e f \u003d\u003e r \u003d\u003e i \u003d\u003e e \u003d\u003e n \u003d\u003e d) matrice (\u003d\u003e hel \u003d\u003e lo \u003d\u003e Fri \u003d \u003e Sfârșitul)

$ Array \u003d str_split ("$ string");

va funcționa foarte bine, dar dacă doriți să salvați personaje speciale în acest rând și doriți să faceți niște manipulări cu ei, asta aș folosi

Face ($ array \u003d mb_substr ($ string, 0, 1, "utf-8");) în timp ce ($ string \u003d mb_substr ($ string, 1, mb_strlen ($ string), "utf-8"));

pentru că, pentru unele dintre obiectivele mele personale, sa arătat că sunt mai fiabile atunci când există o problemă cu caractere speciale

Incearca asta:

$ str \u003d "546788"; $ char_array \u003d preg_split ("//", $ str, -1, preg_split_no_empty);

str_split poate face un truc. Vă rugăm să rețineți că liniile din PHP pot fi obținute în același mod ca și în gama de caractere, în majoritatea cazurilor nu trebuie să împărțiți șirul la matricea "nouă".

Iată un exemplu care funcționează cu linii multibyte (UTF-8).

$ str \u003d "äbcd"; // PHP 5.4.8 permite NULL ca al treilea argument al funcției MB_StrPos ($) ($ arr \u003d mb_substr ($ str, 0, 1, "utf-8");) în timp ce ($ str \u003d mb_substr ($ str, 1 , Mb_strlen ($ str), "UTF-8"));

De asemenea, se poate face folosind preg_split (preg_split ("// u", $ str, , preg_split_no_empty))), dar, spre deosebire de exemplul de mai sus, care funcționează aproape la fel de rapid, indiferent de dimensiunea liniei, preg_split () rapid cu rânduri mici, dar mult mai lent cu mare.

Dacă doriți să împărțiți șirul, este mai bine să utilizați:

$ array \u003d str_split ($ string);

Când aveți un separator care separă șirul, puteți încerca,

Explode ("", $ string);

Unde puteți trece separatorul în prima variabilă din interiorul exploziilor, de exemplu:

Explode (",", $ string);

$ array \u003d str_split ("0123456789bcdfghjkmnpqrstvwxyz");

str_split acceptă un al doilea parametru opțional, lungimea blocului (implicit 1), astfel încât să puteți face lucruri cum ar fi:

$ array \u003d str_split ("AABBCCDD", 2); // $ array \u003d aa // $ array \u003d bb // $ array \u003d cc etc ...

De asemenea, puteți obține părți ale rândului dvs., considerând ca o matrice:

$ String \u003d "salut"; ECHO $ \u200b\u200bstring; // ieșirile "e"

Am vrut doar să spun că am un obiect specific care a avut atribute variabile (în esență, o potrivire a tabelului și am schimbat coloanele din tabel, astfel încât atributele obiectului care reflectă tabelul se vor schimba și

Clasa OBJ (câmpuri protejate $ \u003d matrice ("câmp1", "câmp2"); protejat $ câmp1 \u003d matrice (); protejat $ câmp2 \u003d matrice (); Loadfield protejat () () // acest lucru va încărca $ câmp1 și $ Câmp2 Descrierea funcției protejate Clearfields ($ num) (câmpuri ca câmp $) ($ Acest câmp -\u003e $ câmp [$ num]); // acest lucru nu a funcționat linia de mai jos Funcționată ($ acest -\u003e ($ câmp ) [$ num]); // trebuie să rezolvați mai întâi câmpul $ folosind ())))

Toate obiectivele $ Domenii A fost astfel încât nu trebuie să arăt peste tot în cod, când se schimbă, mă uit doar la începutul clasei și schimba lista de atribute și o matrice de matrice $ Câmpuri, Pentru a reflecta noi atribute.

A fost nevoie de puțin timp să o înțeleg. Sper că poate ajuta pe cineva.

O sarcină
Este necesar să împărțiți șirul în părți. De exemplu, trebuie să accesați fiecare dintre rândurile pe care utilizatorul le introduce în câmpul Formular.

Decizie
Dacă o constantă a șirului efectuează ca părți de separare parțială, atunci funcția Explode () trebuie aplicată:

$ Cuvinte \u003d explodează ("", "sentința mea nu este foarte complicată");

Funcția Split () sau funcția PREG_SPLIT () este utilizată dacă aveți nevoie de o expresie periodică sau perl atunci când descrieți separatorul:

$ Cuvinte \u003d Split ("+", "Această propoziție are câteva spații suplimentare în el.");
$ Cuvinte \u003d preg_split ("/ \\ d \\. /" "Ziua mea: 1. Ridică-te 2. Obțineți îmbrăcămintea de toast");
$ linii \u003d preg_split ("/ [\\ n \\ r] + /", $ _ necesită ["textarea"]);

În cazul unui separator delicat, se folosește funcția SPIRI () sau FLAG / I în funcția PREG_SPLIT ():

$ Cuvinte \u003d Spliti ("X", "31 inci x 22 inci x 9 inci");
$ Cuvinte \u003d preg_split ("/ x / i", "31 inci x 22 centime x 9 inchi");

Discuţie
Cea mai simplă soluție din toate cele de mai sus este utilizarea de explozie (). Treceți separatorul de șir, rândul însuși, care trebuie împărțit și ca parametru opțional, numărul maxim de elemente returnate:

$ dwarves \u003d "Dopey, somnoros, fericit, grumpy, strănim, bashful, doc";
$ dwarf_array \u003d explodează (",", $ dwarves);

Acum variabila $ dwarf_array este o serie de șapte elemente:

Print_r ($ dwarf_array);
Array.
\u003d\u003e Dopey.
\u003d\u003e Somnoros
\u003d\u003e Fericit.
\u003d\u003e Grumpy.
\u003d\u003e Sneezy.
\u003d\u003e Bashful.
\u003d\u003e Doc.
)

Dacă limita specificată este mai mică decât cantitatea de piese posibile, ultima parte conține totul:

$ Dwarf_array \u003d Explode (",", $ pitici, 5);
Print_r ($ dwarf_array);
Array.
\u003d\u003e Dopey.
\u003d\u003e Somnoros
\u003d\u003e Fericit.
\u003d\u003e Grumpy.
\u003d\u003e Sneezy, Bashful, Doc
)

Funcția Explode () interpretează literalmente separatorul rând.

Dacă separatorul de șir este definit ca o virgulă cu un spațiu, atunci această funcție împarte șirul din spațiul care urmează punctbolonului, nu o virgulă sau spațiu. Caracteristica Split () oferă o mai mare flexibilitate. În loc de un șir literal ca separator, utilizează expresia pozitivă regulată:

$ more_dwarves \u003d "Cheeky, Fatso, Wonder Boy, Bunky, Curted, Groggy, Winky";
$ more_dwarf_array \u003d Split (",", $ more_dwarves);

Această expresie regulată împarte șirul de vițeie, urmat de un spațiu opțional, care vă permite să definiți corect toți noii pitici. Astfel, lacunele din numele lor nu sunt separate de ele în părți, dar fiecare nume este alocat independent de faptul dacă este separat de o virgulă "," sau printr-o virgulă cu un spațiu ",":

Print_r ($ more_dwarf_array);
Array.
\u003d\u003e Cheeky.
\u003d\u003e FATSO.
\u003d\u003e Boy Wonder
\u003d\u003e Chunky.
\u003d\u003e Cultivat.
\u003d\u003e Groggy.
\u003d\u003e Winky
)

Există o funcție PREG_SPLIT (), care este similară cu funcția Split () utilizează expresii regulate de perl compatibile în locul expresiilor periodice ale posixului.

Funcția preg_split () oferă avantajele diferitelor extinderi ale expresiilor regulate în Perl, precum și tehnici dificile, cum ar fi includerea textului separator în matricea de linie returnată:

$ Mateth \u003d "3 + 2/7 - 9";
$ stivă \u003d preg_split ("/ * ([+ \\ - / *]) * /", $ mateth, -1, preg_split_delim_capture);
Print_r ($ stack);
Array.
=> 3
=> +
=> 2
=> /
=> 7
=> -
=> 9
)

Expresia regulată separator caută operatori matematici (+, -, /, *), înconjurat de spații inițiale sau finale opționale. Funcțiile PREG_SPLIT_DELIM_CAPTURE comandă funcțiile PREG_SPLIT () pentru a permite coincidențele ca parte a expresiei separator-regulate închise în ghilimele, în matricea de șir returnată. În citate numai simboluri ale operațiunilor matematice, astfel încât matricea returnată nu conține spații ..

2.8k.

Metoda PHP Explode este utilizată pentru a împărți șirul la un anumit număr de substring.

Metoda sintaxă

Exemplu de utilizare a metodei PHP explodează metoda:

$ Array_name \u003d Explode ($ delimiter, $ string_to_split, $ no_of_breaks)

Exemplu de utilizare Explode pentru a împărți numărul de telefon

În acest exemplu, am declarat o variabilă de șir și am atribuit numărul de telefon al următorului format:

001-234-567678

După aceea, metoda explodare a fost aplicată pentru a împărți un șir folosind o cratimă (liniuță) ca separator. Matricea returnată de șiruri de caractere atribuite.

Apoi a utilizat ciclul de ceață alic pentru a afișa valorile elementelor de matrice care sunt numere de telefon sub substring. Deoarece parametrul limită nu este specificat, întregul număr de telefon va fi rupt în trei substante:


Vizualizați demo-ul și codul

Exemplu cu un spațiu ca separator

În acest exemplu, PHP explodează transferul șirului este utilizat ca separator. De exemplu, luați această linie:

În exemplu, parametrul limită nu este utilizat din nou. După crearea rândului, am aplicat metoda explodească pentru ao sparge. Apoi a folosit ciclul de ceață pentru a afișa elementele de matrice returnate.

În cele din urmă, funcția Count () a fost aplicată pentru a scoate numărul de substring în matrice:


Vizualizați demo-ul și codul

Exemplu cu parametrul limită

Acesta este un exemplu descris mai sus, cu excepția faptului că am folosit parametrul limită pentru a specifica numărul de partiții din șir. Mai jos este șirul care a fost utilizat:

Acesta este explodează tutorial care permite împărțirea șirului în PHP.

În PHP explodează, exemplul când am folosit un spațiu ca separator, au fost returnate doar 10 substring. De data aceasta, folosind parametrul limită, au fost definite 5 partiții:


Vizualizați demo-ul și codul

Doar cinci substring sunt afișate pe pagina demo, în timp ce acesta din urmă include restul șirului. Numărul total de elemente de matrice este de asemenea 5 și nu 10, ca în exemplul de mai sus.

De ce aveți nevoie de metoda explodeze

Metoda explodă ( PHP Split.) Folosit pentru a împărți șirul specificat. Să presupunem că formularul web ia un număr de telefon cu codul de țară și zona din următorul format:

001-234-567678

Trebuie să separam codul de țară și zonele care sunt împărțite de o cratimă. Pentru a împărți un număr de telefon, puteți utiliza Explode cu un separator Defis (Dash) după ce numărul este luat ca parametru de intrare.

După cum explodează o matrice de substring, metoda Explodă va sparge numărul la următoarea gamă de elemente:

  • Primul element \u003d 001
  • Al doilea element \u003d 234
  • Al treilea element \u003d 567678

Cum se utilizează funcția PHP Explode

În funcția PHP explodează, puteți specifica trei parametri. Ultimul este opțional, pentru a indica cantitatea de partiții ( numărul maxim de substring) Nu este necesar.

Descrierea fiecărui parametru:

$ Array_name \u003d Explode ($ delimiter, $ string_to_split, $ no_of_breaks)

  • $ Array_name - matrice; Deoarece metoda explodare returnează o matrice de șir obținută prin împărțirea unui șir;
  • $ Delimiter - determină semnul de divizare. 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 că metoda explodului trebuie să fie spartă. Poate fi o variabilă de șir, ofertă etc.;
  • Ultimul parametru indică numărul maxim de substring sau numărul de partiții din șir. Acesta este un parametru opțional.

Dacă în Explode Array PHP argumentul limită este un pozitiv, matricea returnată va conține numărul maxim de elemente, iar ultimul element va conține un reziduu de șir.

O zi buna. În contact, Alexey Gulein. În ultimul articol ați învățat ce funcționează în PHP. În acest scurt articol, aș dori să vorbesc despre cele două caracteristici cele mai frecvent utilizate la programarea scripturilor pe PHP. Acestea sunt funcții exploda () și implozie (). Funcția Explode () servește la ruperea șirului de pe partea și partiția merge pe un separator specific.

Caracteristica Implode () este utilizată pentru a combina șirurile într-una, inserând separatorul între ele. Sintaxa funcției Explode () este după cum urmează:

Lista Explode (separator de șir, str1 str1, Int Limit)

În acest caz, transmitem șir str1, funcția se execută separator în această linie și se împarte șirul. De asemenea, dacă este specificat parametrul limită, șirul va fi împărțit în cuvinte limită. Pentru a face mai clară, să luăm în considerare această caracteristică:

"; FOREACH ($ NWNAMES ca $ nume) Echo" $ nume * "; // În acest caz, șirul va fi împărțit în 3 cuvinte?\u003e

În această funcție, principalul lucru nu este de a confunda ordinea argumentelor. În opinia mea, ar fi mult mai convenabil dacă rândul a fost trecut mai întâi și apoi separatorul. De asemenea, separatorul poate fi nu numai un singur simbol, ci și o linie întreagă (în funcție de ceea ce trebuie să împărțiți în părți separate):

În acest caz, am rupt șirul de pe separatorul ABC. De când știm că în linia 4 a orașelor, atunci toate cele 4 orașe au fost distribuite în variabile.

Funcționarea funcției Implode () este complet opusă funcționării funcției Explode (). Să folosim o listă de orașe și să o îmbinăm din nou într-o singură linie, dar folosind un alt separator:

Asigurați-vă că verificați funcționarea acestui script.

Sfat: Se recomandă utilizarea acestor funcții pentru a sparge liniile (funcționează rapid) și nu le scrie analogii. Regula de Aur: Înainte de a scrie o funcție - aspect, poate că acest lucru este deja disponibil în director și "pentru a inventa o bicicletă" nu este necesar.

Tema: Cu toate acestea, învățăm să programim, așa că să scriem un analog al funcției Impulde (). Această caracteristică va lua primul parametru al listei de matrice, iar al doilea separator prin care trebuie să combinați elementele matricei în șir. Această funcție trebuie să returneze șirul.

Aici am schițat un cod mic, puteți fi pictat. Nu vă grăbiți să urmăriți codul, încercați să vă realizați.