Ako orezať reťazec v azbuke pomocou PHP. Orezanie reťazca PHP: jednoduché spôsoby Orezanie posledných znakov v reťazci php

Adaptívne rozloženie webovej stránky zahŕňa primerané zmeny na jej stránkach v závislosti od zariadenia, ktoré návštevník používa. Ak s ohľadom na blokové a inline prvky možno takmer všetko „zautomatizovať“ pomocou CSS a JavaScriptu, tak pri generovaní obsahu a používaní databáz sa bez serverovej strany zaobídete len ťažko.

V PHP zvyčajne skrátime riadok, keď prvok rozloženia HTML má limit na počet viditeľných znakov, ale toto je súkromná úloha.

Tradičné riešenie

Jednou z najpopulárnejších a často používaných funkcií je substr(). Odovzdávajú sa mu dva alebo tri parametre:

    zdrojový reťazec; štartovacia pozícia ($iPos); dĺžka podreťazca, ktorý sa má odrezať ($iLen).

Posledný parameter je možné vynechať. Ak sú zadané iba dva parametre: výsledkom substr() bude podreťazec, od počiatočnej pozície ($iPos) po koniec pôvodného reťazca. Ak boli odovzdané tri parametre, orezáme reťazec PHP z počiatočnej pozície ($iPos) na zadanú dĺžku ($iLen).

Výber iba začiatku reťazca pomocou tejto funkcie je možný, keď je prvý parameter nula. Ak je počiatočná pozícia záporná, PHP bude považovať znak na pozícii $iPos od konca reťazca za začiatok, z ktorého reťazec skrátime. Znaky v riadku sú číslované od nuly.

Špeciálna funkcia

PHP zvažuje úlohu „prestrihnúť reťazec“ (v širšom zmysle) v kontexte: z oboch strán. Historicky ide o funkciu trim(), ktorej cieľom je odstrániť nepodstatné znaky:

    priestory; zlomy riadkov; návrat kočiara; tabelácia; nulové znaky

z oboch koncov linky. Ide o veľmi obľúbenú funkciu najmä pri práci s databázami, ktorých výber často obsahuje veľa medzier. Použitie funkcie explode() tiež často vedie k extra znakom na začiatku a na konci reťazca.

Nie všetci vývojári však využívajú funkciu trim() naplno. Pre úlohu „skrátiť reťazec“ PHP navrhuje použiť druhý parameter funkcie, kde môžete zadať ľubovoľnú sadu znakov, ktoré by mali byť zo zdrojového reťazca odstránené.


Je dôležité, aby sa znaky odstránili iba zo začiatku a konca zdrojového reťazca. Je dôležité, že manipuláciou s maskami znakov, ktoré sa majú vymazať, a postupnosťou čiastkových úloh.

    Najprv sme odsekli reťazec PHP po jednej maske. Potom ešte jeden. Potom na treťom.

V dôsledku postupnosti možností použitia jednej funkcie sme text v PHP odrezali podľa potreby na vyriešenie úlohy.

Neštandardné metódy

Ak neberieme do úvahy celý rad riadkových funkcií jazyka, potom niekoľko funkcií explode()/implode() a funkcia str_replace() vám umožňuje riešiť neštandardné problémy „orezávania“ riadkových informácií.


Výsledok MySQL dotazu je vždy formálny v štruktúre vrátených informácií a obsah polí (prvkov) výsledku vždy určuje zdroj, teda vývojár, ktorý databázu navrhol.

Toto je konkrétny príklad, ale presne odpovedá na otázku: ako skrátiť riadok v PHP, keď je tam veľa riadkov. Funkcia trm() je špecifická a jej históriu určovali úlohy, keď nebolo veľa informácií a nebolo treba nič iné ako nepodstatné znaky odstrihávať.

Dnes informácie kolujú vo veľkých objemoch a strihanie riadok po riadku je nielen zbytočné, ale aj iracionálne.

Možnosťou je aj rozdelenie na komponenty, napríklad odrezanie šnúrky. PHP automaticky použije explode() na rozrezanie jedného veľkého textu na veľa požadovaných riadkov. Použitím funkcie str_replace() – teda nahradením jedného výskytu znakov iným – môžete dosiahnuť podobný efekt.


Dynamika a objem informácií, ktoré je potrebné spracovať, je v prvom rade adekvátnym riešením, a nie využitím jednej špeciálnej funkcie.

Online konzultácie o údržbe webových stránok v Uljanovsku: ICQ# 179104682

Ako orezať reťazec v azbuke pomocou PHP

Dátum uverejnenia článku: 01.06.2014

Vytvorenie webovej stránky v Ulyanovsku so serióznou funkčnosťou a interakciou s databázami si veľmi často vyžaduje, aby určitý riadok nepresahoval určitý stanovený objem. Môže to byť potrebné napríklad na obmedzenie počtu znakov prenášaných na databázový server pomocou vstupného poľa, na zobrazenie iba časti riadku na stránke lokality (napríklad pri vytváraní oznamov správ rovnakej výšky v zozname) a na mnohé iné úlohy.

Prvá vec, s ktorou sa začínajúci programátori stretávajú, je funkcia PHP substr. V skutočnosti sa používa na orezávanie reťazcov a jeho syntax je jednoduchá podstr(string, int start [, int length]), kde int start je začiatočný znak, od ktorého sa má začať rezať reťazec, a voliteľný parameter int length je počet znakov, ktoré sa majú vystrihnúť. Neskúsenému programátorovi sa však môže zdať zvláštne, ak sa ho pokúsi použiť na orezanie reťazca v azbuke v PHP. V dôsledku práce substr s reťazcom cyriliky sa na konci orezaného reťazca môže objaviť otáznik alebo otáznik v kosoštvorci a z nejakého dôvodu je celkový počet orezaných znakov dvakrát menší ako bol špecifikované v parametri dĺžky int. Prečo sa to deje?

Faktom je, že ruské znaky v UTF-8 majú veľkosť 2 bajty a znaky latinky iba 1 bajt. PHP funkcia substr reže reťazec po bajtoch, nie po znakoch. Ak reťazec pozostáva z latinských znakov, nestane sa nič zvláštne, pretože počet znakov sa zhoduje s počtom bajtov. A pri práci s azbukou, kde každý znak zaberá 2 bajty, parameter dĺžky int môže ľahko spadať do „stredu“ znaku a výsledkom je, že na konci rezu pri výstupe vidieť ten nešťastný otáznik v diamante.

Ako správne vystrihnúť časť riadku azbukou?

Riešenie tohto problému je v skutočnosti veľmi jednoduché. Pre správne PHP orezanie reťazca obsahujúceho znaky azbuky je potrebné použiť PHP funkciu iconv_substr

Syntax funkcie je jednoduchá:

iconv_substr (reťazec, int začiatok [, dĺžka int [, znaková sada]])

Príklad na orezanie reťazca v ruskom jazyku na 80 znakov s kódovaním UTF-8 pomocou iconv_substr:

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

Číslo nula v príklade znamená, že počet 80 znakov začína od úplného začiatku riadku.

Stránka predpokladá adekvátne zmeny na svojich stránkach v závislosti od zariadenia, ktoré návštevník používa. Ak s ohľadom na blokové a inline prvky možno takmer všetko „zautomatizovať“ pomocou CSS a JavaScriptu, tak pri generovaní obsahu a používaní databáz sa bez serverovej strany zaobídete len ťažko.

V PHP zvyčajne skrátime riadok, keď prvok rozloženia HTML má limit na počet viditeľných znakov, ale toto je súkromná úloha.

Tradičné riešenie

Jednou z najpopulárnejších a často používaných funkcií je substr(). Odovzdávajú sa mu dva alebo tri parametre:

  • zdrojový reťazec;
  • štartovacia pozícia ($iPos);
  • dĺžka podreťazca, ktorý sa má odrezať ($iLen).

Posledný parameter je možné vynechať. Ak sú zadané iba dva parametre: výsledkom substr() bude podreťazec, od počiatočnej pozície ($iPos) po koniec pôvodného reťazca. Ak boli odovzdané tri parametre, orezáme reťazec PHP z počiatočnej pozície ($iPos) na zadanú dĺžku ($iLen).

Výber iba začiatku reťazca pomocou tejto funkcie je možný, keď je prvý parameter nula. Ak je počiatočná pozícia záporná, PHP bude považovať znak na pozícii $iPos od konca reťazca za začiatok, z ktorého reťazec skrátime. Znaky v riadku sú číslované od nuly.

Špeciálna funkcia

PHP zvažuje úlohu „prestrihnúť reťazec“ (v širšom zmysle) v kontexte: z oboch strán. Historicky ide o funkciu trim(), ktorej cieľom je odstrániť nepodstatné znaky:

  • priestory;
  • zlomy riadkov;
  • návrat kočiara;
  • tabelácia;
  • nulové znaky

z oboch koncov linky. Ide o veľmi obľúbenú funkciu najmä pri práci s databázami, ktorých výber často obsahuje veľa medzier. Použitie funkcie explode() tiež často vedie k extra znakom na začiatku a na konci reťazca.

Nie všetci vývojári však využívajú funkciu trim() naplno. Pre úlohu „skrátiť reťazec“ PHP navrhuje použiť druhý parameter funkcie, kde môžete zadať ľubovoľnú sadu znakov, ktoré by mali byť zo zdrojového reťazca odstránené.

Je dôležité, aby sa znaky odstránili iba zo začiatku a konca zdrojového reťazca. Je dôležité, že manipuláciou s maskami znakov, ktoré sa majú vymazať, a postupnosťou čiastkových úloh.

  • Najprv sme odsekli reťazec PHP po jednej maske.
  • Potom ešte jeden.
  • Potom na treťom.

V dôsledku postupnosti možností použitia jednej funkcie sme text v PHP odrezali podľa potreby na vyriešenie úlohy.

Neštandardné metódy

Ak neberieme do úvahy celý rad riadkových funkcií jazyka, potom niekoľko funkcií explode()/implode() a funkcia str_replace() vám umožňuje riešiť neštandardné problémy „orezávania“ riadkových informácií.

Výsledok MySQL dotazu je vždy formálny v štruktúre vrátených informácií a obsah polí (prvkov) výsledku vždy určuje zdroj, teda vývojár, ktorý databázu navrhol.

Toto je konkrétny príklad, ale presne odpovedá na otázku: ako skrátiť riadok v PHP, keď je tam veľa riadkov. Funkcia trm() je špecifická a jej históriu určovali úlohy, keď nebolo veľa informácií a nebolo treba nič iné ako nepodstatné znaky odstrihávať.

Dnes informácie kolujú vo veľkých objemoch a strihanie riadok po riadku je nielen zbytočné, ale aj iracionálne.

Možnosťou je aj rozdelenie na komponenty, napríklad odrezanie šnúrky. PHP automaticky použije explode() na rozrezanie jedného veľkého textu na veľa požadovaných riadkov. Použitím funkcie str_replace() – teda nahradením jedného výskytu znakov iným – môžete dosiahnuť podobný efekt.

Dynamika a objem informácií, ktoré je potrebné spracovať, je v prvom rade adekvátnym riešením, a nie využitím jednej špeciálnej funkcie.

Funkcia podstr($string, $start, $length) , kde $string je premenná s textom, $start je znak, od ktorého začína odpočítavanie (0 sa berie ako prvý znak) a $dĺžka je počet znakov vybraný text.

$text = "Príklad a text";

$first = substr($text,0,6); // Zobrazí 6 znakov počnúc od 0, úplne prvého
echo $first; // vypíše "Príklad".

$sekunda = substr($text,8,3); // Zobrazí 3 znaky začínajúce od 8
echo $sekunda; // vytlačí "a"
Ak nezadáte parameter Počet znakov (2. číslica), funkcia zobrazí všetky zostávajúce znaky

$text = "Príklad a text";

$tretina = substr($text,8); // Zobrazí VŠETKY znaky začínajúce od 8
echo $ tretina; // vytlačí "a text"

Orezanie ruského textu pomocou funkcie PHP mb_substr

Funkcia mb_substr plní rovnaké úlohy ako podstr, ale dokáže spracovať aj viacbajtové kódovanie. Preto sa vám v prípade ruského textu bude hodiť mb_substr. Funguje rovnako

$text = "Vzorový text";

$first = mb_substr($text,0,6,"UTF-8"); // Zobrazí 6 znakov počnúc od 0, úplne prvého
// Pozor! Zadajte kódovanie zdrojového textu! V tomto prípade utf-8
echo $first; //zobrazí "Príklad"

$sekunda = mb_substr($text,7,6,"UTF-8"); // Zobrazí 6 znakov počnúc 7
echo $sekunda; // vypíše "text"
Upozorňujeme, že v prípade cyriliky (ruského textu) je lepšie uviesť kódovanie na konci funkcie. Príklad používa najobľúbenejšiu možnosť - UTF-8

Orezanie textu od konca

Ak chcete orezať text od konca, potom označíme záporné číslo pre premennú označujúcu, od ktorého znaku začína výber textu

$text = "Sprite a Fanta";

$prvy = substr($text,-6,5); // Zobrazí 5 znakov počnúc 6. od konca
echo $first; //vytlačí "Fant"

Po orezaní pridáme aj text

Po orezaní premennej textom pridajte na koniec ďalší text

$example = "Text text text text";

$priklad = substr($priklad,0,9); // Zobrazí 9 znakov počnúc od 0, úplne prvého
$example .= "viac...";
echo $priklad; //zobrazí "Text text viac..."
Naopak, na začiatku môžete urobiť nahrávku a potom text orezať

$text = "Strýko";

$example = "George a Michael";
$priklad = substr($priklad,0,6); // Zobrazí 6 znakov počnúc od 0, úplne prvého
$text .= $priklad;
echo $text; //vytlačí "strýko George"

Orezanie textu na prvú medzeru

$text = "Ahoj svet!";
echo substr($text, 0, strpos($text, " ")); // Vytlačí "Ahoj"

Hotová funkcia PHP na orezávanie textu pomocou slov PHP

function cut($string, $length)(
$string = mb_substr($reťazec, 0, $dĺžka,"UTF-8"); // vystrihnúť a pracovať so všetkými kódovaniami a uviesť zdrojové kódovanie
$pozícia = mb_strrpos($string, " ", "UTF-8"); // určenie polohy poslednej medzery. Týmto oddeľujeme slová.
$string = mb_substr($reťazec, 0, $pozícia, "UTF-8"); // Orezať premennú podľa pozície
return $string;
}

$text = "Severná vojna skončila v roku 1721";
echo cut($text, 17); // zobrazí „Severná vojna“ bez časti slova „skončila“

Pomocou poľa môžete orezávať slovami...

$text = "Microsoft založil Bill Gates už v roku 1975.";

$pole = explode(" ",$text); // spracuje reťazec do poľa
$pole = pole_slice($pole,0,5); // vyberte prvých 5 prvkov slova
$novytext = implode(" ",$pole); // konvertuje pole späť na reťazec

Echo $newtext;//Zobrazí „Microsoft založil Bill Gates“

 

Môže byť užitočné prečítať si: