Kako obrezati niz v cirilici s pomočjo PHP. Obrezovanje niza PHP: preprosti načini Obrezovanje zadnjih znakov v nizu php

Prilagodljiva postavitev spletne strani vključuje ustrezne spremembe na njenih straneh glede na napravo, ki jo obiskovalec uporablja. Če je pri blokovnih in vgrajenih elementih skoraj vse mogoče "avtomatizirati" s pomočjo CSS in JavaScript, potem je pri ustvarjanju vsebine in uporabi baz podatkov težko brez strežniške strani.

Običajno obrežemo vrstico v PHP, ko ima element postavitve HTML omejitev števila znakov, ki so vidni, vendar je to zasebna naloga.

Tradicionalna rešitev

Ena najbolj priljubljenih in pogosto uporabljenih funkcij je substr(). Vanj se posredujeta dva ali trije parametri:

    izvorni niz; začetni položaj ($iPos); dolžina podniza, ki ga želite izrezati ($iLen).

Zadnji parameter lahko izpustite. Če sta podana samo dva parametra: bo rezultat substr() podniz od začetnega položaja ($iPos) do konca prvotnega niza. Če so bili posredovani trije parametri, potem obrežemo niz PHP z začetnega položaja ($iPos) na določeno dolžino ($iLen).

Izbira samo začetka niza s to funkcijo je mogoča, ko je prvi parameter enak nič. Če je začetni položaj negativen, bo PHP upošteval znak na položaju $iPos od konca niza kot začetek, od katerega skrajšamo niz. Znaki v vrstici so oštevilčeni od nič.

Posebna funkcija

PHP obravnava nalogo "rezanja niza" (v širšem smislu) v kontekstu: z obeh strani. V preteklosti je to funkcija trim(), katere namen je odstraniti nepomembne znake:

    prostori; prelomi vrstic; vrnitev kočije; tabeliranje; ničelni znaki

z obeh koncev črte. To je zelo priljubljena funkcija, zlasti pri delu z zbirkami podatkov, kjer izbor pogosto vsebuje veliko presledkov. Uporaba funkcije explode() prav tako pogosto povzroči dodatne znake na začetku in koncu niza.

Vendar pa vsi razvijalci ne uporabljajo funkcije trim() v celoti. Za nalogo »obreži niz« PHP predlaga uporabo drugega parametra funkcije, kjer lahko podate poljuben nabor znakov, ki jih je treba odstraniti iz izvornega niza.


Pomembno je, da se znaki odstranijo le z začetka in konca izvornega niza. Pomembno je, da z manipulacijo mask znakov, ki jih želite izbrisati, in zaporedja podopravil.

    Najprej smo niz PHP odrezali masko za masko. Potem še enega. Potem na tretjem.

Kot rezultat zaporedja možnosti za uporabo ene funkcije smo izrezali besedilo v PHP, kot je potrebno za rešitev naloge.

Nestandardne metode

Če ne upoštevamo celotnega obsega linijskih funkcij jezika, potem nekaj funkcij explode()/implode() in funkcija str_replace() omogočata reševanje nestandardnih problemov "rezanja" linijskih informacij.


Rezultat poizvedbe MySQL je vedno formalen v strukturi vrnjenih informacij, vsebino polj (elementov) rezultata pa vedno določa vir, to je razvijalec, ki je zasnoval bazo podatkov.

To je poseben primer, vendar natančno odgovarja na vprašanje: kako skrajšati vrstico v PHP, ko je vrstic veliko. Funkcija trm() je posebna in njena zgodovina je bila določena z nalogami, ko ni bilo veliko informacij in ni bilo treba odrezati ničesar drugega kot nepomembne znake.

Danes informacije krožijo v velikih količinah in rezanje po vrsticah ni le nepotrebno, ampak tudi neracionalno.

Razdelitev na komponente je tudi možnost, kot bi odrezali vrvico. PHP bo samodejno uporabil explode() za razrez enega velikega besedila v več zahtevanih vrstic. Z uporabo funkcije str_replace() - to je zamenjava ene pojavitve znakov z drugo - lahko dosežete podoben učinek.


Dinamika in obseg informacij, ki jih je treba obdelati, je v prvi vrsti ustrezna rešitev in ne uporaba ene posebne funkcije.

Spletno posvetovanje o vzdrževanju spletnega mesta v Uljanovsku: ICQ# 179104682

Kako obrezati niz v cirilici s PHP

Datum objave članka: 01.06.2014

Ustvarjanje spletnega mesta v Uljanovsku z resno funkcionalnostjo in interakcijo z bazami podatkov zelo pogosto zahteva, da določena vrstica ne presega določenega določenega obsega. To je morda potrebno na primer za omejitev števila znakov, poslanih strežniku podatkovne baze z uporabo vnosnega polja, za prikaz samo dela vrstice na strani spletnega mesta (na primer pri ustvarjanju novic enake višine na seznamu) in za številna druga opravila.

Prva stvar, na katero naletijo programerji začetniki, je funkcija PHP substr. Pravzaprav se uporablja za obrezovanje nizov in njegova sintaksa je preprosta substr(niz, int začetek [, int dolžina]), kjer je int začetek začetni znak, od katerega se začne rezati niz, izbirni parameter int length pa je število znakov za rezanje. Vendar pa se lahko neizkušenemu programerju zdi nenavadno, če ga poskuša uporabiti za obrezovanje niza v cirilici v PHP. Zaradi dela substr s ciriličnim nizom se lahko na koncu obrezanega niza pojavi vprašaj ali vprašaj v diamantu in iz neznanega razloga je skupno število odrezanih znakov dvakrat manjše od tistega, kar je bilo določeno v parametru dolžine int. Zakaj se to dogaja?

Dejstvo je, da so ruski znaki v UTF-8 veliki 2 bajta, latinski znaki pa le 1 bajt. Funkcija PHP substr reže niz po bajtih, ne po znakih. Če je niz sestavljen iz latiničnih znakov, se ne zgodi nič čudnega, saj število znakov sovpada s številom bajtov. In pri delu s cirilico, kjer vsak znak zavzema 2 bajta, lahko parameter dolžine int zlahka pade v "sredino" znaka in posledično bomo na koncu izrezane črte pri izpisu glej tisti nesrečni vprašaj v diamantu.

Kako pravilno izrezati del črte s cirilico?

Rešitev tega problema je pravzaprav zelo preprosta. Za pravilno PHP obrezovanje niza, ki vsebuje cirilične znake, morate uporabiti PHP funkcijo iconv_substr

Sintaksa funkcije je preprosta:

iconv_substr (niz, začetek int [, dolžina int [, nabor znakov]])

Primer za obrezovanje niza v ruskem jeziku na 80 znakov s kodiranjem UTF-8 z uporabo iconv_substr:

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

Število nič v primeru pomeni, da se štetje 80 znakov začne od samega začetka vrstice.

Stran predvideva ustrezne spremembe na svojih straneh glede na napravo, ki jo obiskovalec uporablja. Če je pri blokovnih in vgrajenih elementih skoraj vse mogoče "avtomatizirati" s pomočjo CSS in JavaScript, potem je pri ustvarjanju vsebine in uporabi baz podatkov težko brez strežniške strani.

Običajno obrežemo vrstico v PHP, ko ima element postavitve HTML omejitev števila znakov, ki so vidni, vendar je to zasebna naloga.

Tradicionalna rešitev

Ena najbolj priljubljenih in pogosto uporabljenih funkcij je substr(). Vanj se posredujeta dva ali trije parametri:

  • izvorni niz;
  • začetni položaj ($iPos);
  • dolžina podniza, ki ga želite izrezati ($iLen).

Zadnji parameter lahko izpustite. Če sta podana samo dva parametra: bo rezultat substr() podniz od začetnega položaja ($iPos) do konca prvotnega niza. Če so bili posredovani trije parametri, potem obrežemo niz PHP z začetnega položaja ($iPos) na določeno dolžino ($iLen).

Izbira samo začetka niza s to funkcijo je mogoča, ko je prvi parameter enak nič. Če je začetni položaj negativen, bo PHP upošteval znak na položaju $iPos od konca niza kot začetek, od katerega skrajšamo niz. Znaki v vrstici so oštevilčeni od nič.

Posebna funkcija

PHP obravnava nalogo "rezanja niza" (v širšem smislu) v kontekstu: z obeh strani. V preteklosti je to funkcija trim(), katere namen je odstraniti nepomembne znake:

  • prostori;
  • prelomi vrstic;
  • vrnitev kočije;
  • tabeliranje;
  • ničelni znaki

z obeh koncev črte. To je zelo priljubljena funkcija, zlasti pri delu z zbirkami podatkov, kjer izbor pogosto vsebuje veliko presledkov. Uporaba funkcije explode() prav tako pogosto povzroči dodatne znake na začetku in koncu niza.

Vendar pa vsi razvijalci ne uporabljajo funkcije trim() v celoti. Za nalogo »obreži niz« PHP predlaga uporabo drugega parametra funkcije, kjer lahko podate poljuben nabor znakov, ki jih je treba odstraniti iz izvornega niza.

Pomembno je, da se znaki odstranijo le z začetka in konca izvornega niza. Pomembno je, da z manipulacijo mask znakov, ki jih želite izbrisati, in zaporedja podopravil.

  • Najprej smo niz PHP odrezali masko za masko.
  • Potem še enega.
  • Potem na tretjem.

Kot rezultat zaporedja možnosti za uporabo ene funkcije smo izrezali besedilo v PHP, kot je potrebno za rešitev naloge.

Nestandardne metode

Če ne upoštevamo celotnega obsega linijskih funkcij jezika, potem nekaj funkcij explode()/implode() in funkcija str_replace() omogočata reševanje nestandardnih problemov "rezanja" linijskih informacij.

Rezultat poizvedbe MySQL je vedno formalen v strukturi vrnjenih informacij, vsebino polj (elementov) rezultata pa vedno določa vir, to je razvijalec, ki je zasnoval bazo podatkov.

To je poseben primer, vendar natančno odgovarja na vprašanje: kako skrajšati vrstico v PHP, ko je vrstic veliko. Funkcija trm() je posebna in njena zgodovina je bila določena z nalogami, ko ni bilo veliko informacij in ni bilo treba odrezati ničesar drugega kot nepomembne znake.

Danes informacije krožijo v velikih količinah in rezanje po vrsticah ni le nepotrebno, ampak tudi neracionalno.

Razdelitev na komponente je tudi možnost, kot bi odrezali vrvico. PHP bo samodejno uporabil explode() za razrez enega velikega besedila v več zahtevanih vrstic. Z uporabo funkcije str_replace() - to je zamenjava ene pojavitve znakov z drugo - lahko dosežete podoben učinek.

Dinamika in obseg informacij, ki jih je treba obdelati, je v prvi vrsti ustrezna rešitev in ne uporaba ene posebne funkcije.

funkcija substr($string, $start, $length) , kjer je $string spremenljivka z besedilom, $start je znak, od katerega se začne odštevanje (0 se vzame kot prvi znak), $length pa je število znakov v izbrano besedilo.

$text = "Primer in besedilo";

$first = substr($text,0,6); // Prikaže 6 znakov, začenši z 0., prvim
echo $first; // bo izpisal "Primer".

$second = substr($text,8,3); // Prikazuje 3 znake od 8
echo $drugo; // bo izpisal "in"
Če parametra Število znakov (2. številka) ne določite, bo funkcija prikazala vse preostale znake

$text = "Primer in besedilo";

$tretji = substr($text,8); // Prikaže VSE znake od 8
echo $tretja; // natisne "in besedilo"

Obrezovanje ruskega besedila s funkcijo PHP mb_substr

funkcija mb_substr opravlja iste naloge kot substr, vendar je sposoben obravnavati tudi večbajtna kodiranja. Zato bo v primeru ruskega besedila koristno za vas mb_substr. Deluje enako

$text = "Primer besedila";

$first = mb_substr($text,0,6,"UTF-8"); // Prikaže 6 znakov, začenši z 0., prvim
// Pozor! Določite kodiranje izvornega besedila! V tem primeru utf-8
echo $first; //prikaže "Primer"

$drugi = mb_substr($text,7,6,"UTF-8"); // Prikazuje 6 znakov od 7
echo $drugo; // bo izpisal "besedilo"
Upoštevajte, da je v primeru cirilice (rusko besedilo) bolje navesti kodiranje na koncu funkcije. Primer uporablja najbolj priljubljeno možnost - UTF-8

Obrezovanje besedila od konca

Če želite besedilo obrezati od konca, bomo za to navedli negativno število za spremenljivko, ki označuje, s katerim znakom se začne izbor besedila

$text = "Sprite in fanta";

$first = substr($text,-6,5); // Prikazuje 5 znakov od 6. od konca
echo $first; //natisne "Fant"

Po obrezovanju dodamo še besedilo

Ko ste spremenljivko obrezali z besedilom, dodajte dodatno besedilo na konec

$example = "Besedilo besedilo besedilo besedilo";

$example = substr($example,0,9); // Prikaže 9 znakov, začenši z 0., prvim
$example .= "več...";
echo $primer; //prikaže se "Besedilno besedilo več ..."
Nasprotno, lahko naredite posnetek na začetku, nato pa obrežete besedilo

$text = "stric";

$example = "George in Michael";
$example = substr($example,0,6); // Prikaže 6 znakov, začenši z 0., prvim
$besedilo .= $primer;
echo $besedilo; //natisne "stric George"

Obrezovanje besedila na prvi presledek

$text = "Pozdravljen svet!";
echo substr($text, 0, strpos($text, " ")); // Natisne "Hello"

Pripravljena PHP funkcija za obrezovanje besedila s PHP Words

funkcija cut($string, $length)(
$string = mb_substr($string, 0, $length,"UTF-8"); // izrežite in delajte z vsemi kodiranji ter navedite izvorno kodiranje
$position = mb_strrpos($string, " ", "UTF-8"); // določi položaj zadnjega presledka. Po tem ločujemo besede.
$string = mb_substr($string, 0, $position, "UTF-8"); // Obrežite spremenljivko po položaju
vrni niz $;
}

$text = "Severna vojna se je končala leta 1721";
echo cut ($text, 17); // bo prikazal "Severna vojna", brez dela besede "končano"

Lahko obrezujete po besedah ​​skozi niz ...

$text = "Microsoft je leta 1975 ustanovil Bill Gates.";

$array = explode(" ",$text); // obdelamo niz v matriko
$matrika = array_slice($array,0,5); // izberite prvih 5 besednih elementov
$newtext = implode(" ",$array); // pretvori matriko nazaj v niz

Echo $newtext;//Prikazano bo "Microsoft je ustanovil Bill Gates"

 

Morda bi bilo koristno prebrati: