Cum să tăiați un șir chirilic folosind PHP

PHP tăind o linie de la capăt.

Fier

Consultație online privind întreținerea site-ului web în Ulyanovsk: ICQ# 179104682

Cum să tăiați un șir chirilic folosind PHP

Data publicării articolului: 06/01/2014

Crearea unui site web în Ulyanovsk cu funcționalitate serioasă și interacțiune cu bazele de date necesită foarte des ca o anumită linie să nu depășească un anumit volum specificat. Acest lucru poate fi necesar, de exemplu, pentru a limita numărul de caractere transmis către serverul bazei de date folosind câmpul de introducere, pentru a afișa doar o parte a unei linii pe pagina unui site (de exemplu, când se creează anunțuri de știri de înălțime egală într-o listă) și pentru multe alte sarcini. Primul lucru pe care îl întâlnesc programatorii începători este funcția PHP substr. De fapt, este folosit pentru a tăia șiruri și sintaxa sa este simplă substr

(string, int start [, int length]), unde int start este caracterul de pornire de la care se începe tăierea șirului, iar parametrul opțional int length este numărul de caractere de tăiat. Cu toate acestea, poate părea ciudat pentru un programator fără experiență dacă încearcă să-l folosească pentru a tăia un șir chirilic în PHP. Ca rezultat al lucrului substr cu un șir chirilic, un semn de întrebare sau un semn de întrebare într-un diamant poate apărea la sfârșitul șirului tăiat și, din anumite motive, numărul total de caractere tăiate este de două ori mai mic decât a fost specificat în parametrul int length. De ce se întâmplă asta?

Faptul este că caracterele rusești în UTF-8 au dimensiunea de 2 octeți, iar caracterele latine au doar 1 octet. Funcția PHP substr taie un șir pe octeți, nu pe caractere. Dacă șirul este format din caractere latine, atunci nu se întâmplă nimic ciudat, deoarece numărul de caractere coincide cu numărul de octeți. Și când lucrați cu alfabetul chirilic, unde fiecare caracter ocupă 2 octeți, parametrul lungime int poate cădea cu ușurință în „mijlocul” caracterului și, ca urmare, la sfârșitul liniei tăiate, la ieșire, vom vezi acel semn de întrebare nefericit dintr-un diamant.

Cum să tăiați corect o parte dintr-o linie cu alfabet chirilic?

Soluția la această problemă este de fapt foarte simplă. Pentru decuparea corectă în PHP a unui șir care conține caractere chirilice, trebuie să utilizați funcția PHP iconv_substr

Sintaxa funcției este simplă:

iconv_substr (șir, int start [, int lungime [, set de caractere]])

$new_string = iconv_substr ($string, 0 , 80 , „UTF-8”);

Numărul zero din exemplu înseamnă că numărul de 80 de caractere începe chiar de la începutul liniei.

Programatorii de foarte multe ori trebuie să se ocupe de diverse funcții pentru a lucra cu șiruri în PHP. Toate funcțiile sunt prezentate în diverse cărți de referință, dar aș vrea să mă limitez doar la cele principale.

PHP function substr - obține o parte dintr-un șir

Când trebuie să selectați un pasaj de o lungime dată dintr-un șir care începe dintr-o poziție dată, funcția substr vine în ajutor.În această funcție, separate prin virgule, sunt transmise următoarele: text, poziția de pornire și numărul de caractere. Ultimul parametru este opțional, iar dacă lipsește, rezultatul funcției va fi un fragment din textul sursă de la poziția de început până la sfârșitul rândului.

Funcția PHP strlen - aflați lungimea unui șir

Această funcție returnează lungimea șirului original ca număr întreg.Cu această funcție poți verifica lungimea datelor introduse de utilizator, sau poate altceva.

Funcția PHP trim - eliminați spațiile suplimentare de la marginile unui șir

Funcția de tăiere elimină orice caractere de spații albe de pe marginile unui șir, inclusiv caracterul newline. Există, de asemenea, funcțiile rtrim și ltrim, care elimină spațiile de la sfârșitul sau începutul unei linii.

Funcția PHP strpos - caută un șir

Funcția strpos caută un subșir într-un șir și, dacă are succes, returnează poziția începutului acelui subșir. După găsirea primului subșir, căutarea se oprește.Ordinea argumentelor din funcție, după cum probabil ați ghicit, este următoarea: șir sursă, subșir, poziție de pornire. Al treilea parametru este opțional, dar încercați să vă amintiți că este acolo.

Funcția PHP strip_tags - elimină etichetele HTML și PHP dintr-un șir

Funcția strip_tags returnează un șir fără etichete html și php. Îți va fi util atunci când scrii un modul de comentarii pe site-ul tău, pentru a nu lăsa atacatorilor posibilitatea de a-ți sparge site-ul prin intermediul formularului.htmlŞi php trebuie eliminat"; echo strip_tags($text); echo strip_tags($text," ");//do not delete em tags ?> Primul argument al funcției este textul sursă, iar al doilea este etichetele care nu trebuie șterse.

Funcția PHP strtolower - convertește un șir în minuscule

Funcția PHP strtoupper - convertește un șir în majuscule

Dacă ați găsit acest site util, puteți contribui la dezvoltarea acestuia prin plasare

Site-ul presupune modificări adecvate în paginile sale în funcție de dispozitivul pe care îl folosește vizitatorul. Dacă în ceea ce privește elementele bloc și inline, aproape totul poate fi „automatizat” folosind CSS și JavaScript, atunci când se generează conținut și se utilizează baze de date, este dificil să se facă fără partea de server.

De obicei trunchiem o linie în PHP atunci când un element de aspect HTML are o limită a numărului de caractere care sunt vizibile, dar aceasta este o sarcină privată.

Soluție tradițională

Una dintre cele mai populare și frecvent utilizate funcții este substr(). I se trec doi sau trei parametri:

  • șir sursă;
  • poziția de pornire ($iPos);
  • lungimea subșirului de tăiat ($iLen).

Ultimul parametru poate fi omis. Dacă sunt dați doar doi parametri: rezultatul substr() va fi un subșir, de la poziția de început ($iPos) până la sfârșitul șirului original. Dacă au fost trecuți trei parametri, atunci tăiem șirul PHP de la poziția de început ($iPos) la lungimea specificată ($iLen).

Selectarea doar a începutului unui șir folosind această funcție este posibilă atunci când primul parametru este zero. Dacă poziția inițială este negativă, atunci PHP va considera caracterul de la poziția $iPos de la sfârșitul șirului ca fiind începutul de la care trunchiem șirul. Caracterele dintr-o linie sunt numerotate începând de la zero.

Funcție specială

PHP consideră sarcina de a „tăia o sfoară” (în sens larg) în context: din ambele părți. Din punct de vedere istoric, aceasta este funcția trim(), care își propune să elimine caracterele nesemnificative:

  • spatii;
  • întreruperi de linie;
  • retur transport;
  • intabulare;
  • caractere nule

de la ambele capete ale liniei. Aceasta este o caracteristică foarte populară, mai ales atunci când lucrați cu baze de date, selecția din care adesea conține multe spații. Utilizarea funcției explode() are ca rezultat adesea caractere suplimentare la începutul și la sfârșitul șirului.

Cu toate acestea, nu toți dezvoltatorii folosesc funcția trim() la întregul său potențial. Pentru sarcina „trunchiați un șir”, PHP sugerează utilizarea celui de-al doilea parametru al funcției, unde puteți specifica orice set de caractere care ar trebui eliminat din șirul sursă.

Este important ca caracterele să fie eliminate numai de la începutul și de la sfârșitul șirului sursă. Este important ca prin manipularea măștilor personajelor să fie șterse și a secvenței de subsarcini.

  • În primul rând, tăiem șirul PHP câte o mască.
  • Apoi încă unul.
  • Apoi pe a treia.

Ca rezultat al unei secvențe de opțiuni pentru utilizarea unei singure funcții, am tăiat textul în PHP așa cum este necesar pentru a rezolva sarcina.

Metode non-standard

Dacă nu luăm în considerare întreaga gamă de funcții de linie ale limbajului, perechea de funcții explode()/implode() și funcția str_replace() vă permit să rezolvați probleme non-standard de „tăiere” informațiilor de linie.

Rezultatul unei interogări MySQL este întotdeauna formal în structura informațiilor returnate, iar conținutul câmpurilor (elementelor) rezultatului este întotdeauna determinat de sursă, adică de dezvoltatorul care a proiectat baza de date.

Acesta este un exemplu particular, dar răspunde exact la întrebarea: cum să trunchiați o linie în PHP când există multe linii. Funcția trm() este una anume, iar istoricul ei a fost determinat de sarcini când nu existau prea multe informații și nu era nevoie să tăiați altceva decât caractere nesemnificative.

Astăzi informațiile circulă în volume mari și tăierea rând cu linie nu este doar inutilă, ci și irațională.

Împărțirea în componente este, de asemenea, o opțiune, cum ar fi tăierea unei linii. PHP va folosi automat explode() pentru a tăia un text mare în mai multe linii necesare. Folosind funcția str_replace() - adică înlocuind o apariție a caracterelor cu alta - puteți obține un efect similar.

Dinamica și volumul de informații care trebuie procesate este, în primul rând, o soluție adecvată, și nu utilizarea unei singure funcții speciale.

Cele mai bune articole pe această temă