Online konzultace o údržbě webových stránek v Uljanovsku: ICQ# 179104682

Jak zkrátit azbuku pomocí pomocí PHP

Datum umístění článku: 06.01.2014

Vytvoření webu v Uljanovsku se seriózní funkčností a interakcí s databázemi velmi často vyžaduje, aby určitý řádek nepřesahoval určitý stanovený objem. To může být nutné například pro omezení počtu znaků přenášených na databázový server pomocí vstupního pole, pro zobrazení pouze části řádku na stránce webu (například při generování zpráv o stejné výšce v seznamu) a pro mnoho dalších úkolů.

První věc, na kterou začínající programátoři narazí, je Funkce PHP substr. Opravdu se používá pro ořezávání strun a jeho syntaxe je jednoduchá. substr(string, int start [, int length]), kde int start je počáteční znak, od kterého se má začít stříhat řetězec, a volitelný parametr int length je počet znaků, které se mají oříznout. Nezkušenému programátorovi se však může zdát divné, když se jej pokusí použít pro PHP ořezávání řetězce v azbuce. V důsledku operace substr s řetězcem v azbuce se na konci zkráceného řetězce může objevit otazník nebo otazník v kosočtverci a celkový počet z nějakého důvodu jsou vyříznuté znaky dvakrát menší, než bylo zadáno v parametru délky int. Proč se tohle děje?

Faktem je, že znaky ruského jazyka v UTF-8 mají velikost 2 bajty a znaky latinky jsou pouze 1 bajt. Funkce PHP substr řeže řetězec přesně podle bajtů, nikoli podle znaků. Pokud se řetězec skládá ze znaků latinky, nestane se nic zvláštního, protože počet znaků je stejný jako počet bajtů. A při práci s azbukou, kde každý znak zabírá 2 bajty, může parametr délky int snadno spadnout do „středu“ znaku a v důsledku toho na konci řádku řezu při výstupu uvidíme, že špatně -osudový otazník v kosočtverci.

Jak správně ustřihnout část provázku azbukou?

Řešení tohoto problému je ve skutečnosti velmi jednoduché. Pro správné PHP oříznutí řetězce obsahujícího znaky azbuky musíte použít PHP funkci iconv_substr

Syntaxe funkce je jednoduchá:

iconv_substr(řetězec, int začátek[, délka int[, znaková sada]])

Příklad pro oříznutí ruského řetězce na 80 znaků s kódováním UTF-8 pomocí iconv_substr:

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

Číslo nula v příkladu znamená, že počet 80 znaků začíná od samého začátku řádku.

Responzivní uspořádání webu zahrnuje adekvátní změnu jeho stránek v závislosti na zařízení, které návštěvník používá. Pokud jde o blokové a inline prvky, téměř vše se hodí k „automatizaci“ pomocí CSS a JavaScript, pak se při vytváření obsahu a používání databází bez serverové strany jen těžko obejdete.

Řetězec v PHP obvykle ořízneme, když HTML prvek rozvržení má omezený počet znaků, které jsou viditelné, ale jedná se o soukromý úkol.

Tradiční řešení

Jednou z nejoblíbenějších a často používaných funkcí je substr(). Jsou předávány dva nebo tři parametry:

    originální řetězec; počáteční pozice ($iPos); délka podřetězce, který má být odříznut ($iLen).

Poslední parametr lze vynechat. Pokud jsou zadány pouze dva parametry: výsledkem substr() bude podřetězec, od počáteční pozice ($iPos) do konce originální řetězec. Pokud byly předány tři parametry, zkraťte řetězec PHP z počáteční pozice ($iPos) na zadanou délku ($iLen).

Výběr pouze začátku řetězce pomocí této funkce je možný, když je první parametr nula. Pokud je počáteční pozice záporná, PHP bude považovat znak na pozici $iPos od konce řetězce za začátek, od kterého se má řetězec přerušit. Číslování znaků v řádku se provádí od nuly.

speciální funkce

PHP zvažuje úkol „přestřihnout řetězec“ (v širokém slova smyslu) v kontextu: z obou stran. Historicky se jedná o funkci trim(), jejímž cílem je odstranit nevýznamné znaky:

    prostory; zalomení řádků; návrat vozíku; tabelování; nulové znaky

z obou konců linky. Jedná se o velmi žádanou funkci zejména při práci s databázemi, jejichž výběr často obsahuje spoustu mezer. Při použití funkce explode() se také často získávají další znaky ze začátku a konce řetězce.

Ne všichni vývojáři však využívají funkci trim() naplno. Pro úlohu „trim string“ PHP navrhuje použít druhý parametr funkce, kde můžete zadat libovolnou sadu znaků, které by měly být z původního řetězce odstraněny.


Je nezbytné, aby byly znaky odstraněny pouze ze začátku a z konce původního řetězce. Je důležité, že manipulací s maskami znaků, které mají být odstraněny, a posloupností dílčích úkolů.

    Nejprve ořízneme řetězec v PHP o jednu masku. Pak na druhé. Pak na třetí.

V důsledku posloupnosti možností použití jedné funkce jsme text v PHP ořízli tak, jak je to nutné k vyřešení úlohy.

Nestandardní způsoby

Pokud neuvažujeme celou škálu řetězcových funkcí jazyka, pak dvojice funkcí explode()/implode() a funkce str_replace() umožňují řešit nestandardní úlohy „ořezávání“ řetězcové informace.


Výsledek MySQL dotazu je ve struktuře výstupních informací vždy formální a obsah polí (prvků) výsledku vždy určuje zdroj, tedy vývojář, který databázi navrhl.

Toto je konkrétní příklad, ale přesně odpovídá na otázku: jak přeříznout řetězec v PHP, když je tam mnoho řetězců. Zvláštností je funkce trm() a její historii určují úkoly, kdy nebylo mnoho informací a nebylo potřeba ořezávat něco jiného než nepodstatné znaky.

Dnes informace kolují ve velkém a stříhat řádek po řádku je nejen zbytečné, ale i iracionální.

Rozdělení na komponenty je také možností, jak oříznout řetězec. PHP automaticky exploduje () rozřeže jeden velký text na mnoho potřebných řádků. Pomocí funkce str_replace() - tedy nahrazením jednoho výskytu znaků jiným - můžete dosáhnout podobného efektu.


Dynamika a objem informací, které je potřeba zpracovat, je v prvé řadě adekvátním řešením, a ne použití jedné speciální funkce.

Programátoři se velmi často musí potýkat s různými funkcemi pro manipulaci s řetězci v php. Všechny funkce jsou uvedeny v různých referenčních knihách, ale rád bych se omezil pouze na ty hlavní.

PHP funkce substr - získat část řetězce

Když potřebujete vybrat pasáž dané délky z řetězce, počínaje danou pozici, přichází na pomoc funkce substr.V této funkci se předává čárka: text, počáteční pozice a počet znaků. Poslední parametr je volitelný, a pokud chybí, výsledkem funkce bude fragment zdrojového textu od počáteční pozice do konce řádku.

PHP funkce strlen - získání délky řetězce

Tato funkce vrací délku původního řetězce jako celé číslo.Pomocí této funkce můžete zkontrolovat délku zadávaných dat uživatelem a možná i něco dalšího.

Funkce PHP trim - odstranění nadbytečných mezer z okrajů řetězce

Funkce trim odstraní všechny mezery z okrajů řetězce, včetně znaku nového řádku. Existují také funkce rtrim a ltrim, které odstraňují mezery na konci a/nebo začátku řetězce.

PHP funkce strpos - vyhledává v řetězci

Funkce strpos hledá podřetězec v řetězci a v případě úspěchu vrátí pozici začátku tohoto podřetězce. Po nalezení prvního podřetězce se hledání zastaví.Pořadí argumentů ve funkci, uhodli jste, je: zdrojový řetězec, podřetězec, počáteční pozice. Třetí parametr je volitelný, ale zkuste si zapamatovat, co to je.

PHP funkce strip_tags - odstraňuje HTML a PHP tagy z řetězce

Funkce strip_tags vrací řetězec zbavený html tagy a php. Bude se vám hodit, když na svůj web napíšete modul komentářů, abyste útočníkům nenechali příležitost hacknout váš web prostřednictvím formuláře.html a php musí být odstraněn"; echo strip_tags($text); echo strip_tags($text," ");//neodstraňujte značky em ?> První argument funkce je zdrojový text a druhý jsou značky, které by se neměly odstraňovat.

PHP funkce strtolower - Převede řetězec na malá písmena

PHP funkce strtoupper - převod řetězce na velká písmena

Pokud pro vás byly tyto stránky užitečné, můžete pomoci v jejich rozvoji vložením

Stránka předpokládá adekvátní změnu svých stránek v závislosti na zařízení, které návštěvník používá. Pokud se s ohledem na blokové a inline prvky téměř vše hodí k „automatizaci“ pomocí CSS a JavaScriptu, pak se při generování obsahu a používání databází bez serverové strany jen těžko obejdete.

Řetězec v PHP obvykle zkracujeme, když má prvek rozvržení HTML omezený počet znaků, které jsou viditelné, ale to je soukromá záležitost.

Tradiční řešení

Jednou z nejoblíbenějších a často používaných funkcí je substr(). Jsou předávány dva nebo tři parametry:

  • originální řetězec;
  • počáteční pozice ($iPos);
  • délka podřetězce, který má být odříznut ($iLen).

Poslední parametr lze vynechat. Pokud jsou zadány pouze dva parametry: výsledkem substr() bude podřetězec, od počáteční pozice ($iPos) do konce zdrojového řetězce. Pokud byly předány tři parametry, zkraťte řetězec PHP z počáteční pozice ($iPos) na zadanou délku ($iLen).

Výběr pouze začátku řetězce pomocí této funkce je možný, když je první parametr nula. Pokud je počáteční pozice záporná, PHP bude považovat znak na pozici $iPos od konce řetězce za začátek, od kterého se má řetězec přerušit. Číslování znaků v řádku se provádí od nuly.

speciální funkce

PHP zvažuje úkol „přestřihnout řetězec“ (v širokém slova smyslu) v kontextu: z obou stran. Historicky se jedná o funkci trim(), jejímž cílem je odstranit nevýznamné znaky:

  • prostory;
  • zalomení řádků;
  • návrat vozíku;
  • tabelování;
  • nulové znaky

z obou konců linky. Jedná se o velmi žádanou funkci zejména při práci s databázemi, jejichž výběr často obsahuje spoustu mezer. Při použití funkce explode() se také často získávají další znaky ze začátku a konce řetězce.

Ne všichni vývojáři však využívají funkci trim() naplno. Pro úlohu „trim string“ PHP navrhuje použít druhý parametr funkce, kde můžete zadat libovolnou sadu znaků, které by měly být z původního řetězce odstraněny.

Je nezbytné, aby byly znaky odstraněny pouze ze začátku a z konce původního řetězce. Je důležité, že manipulací s maskami znaků, které mají být odstraněny, a posloupností dílčích úkolů.

  • Nejprve ořízneme řetězec v PHP o jednu masku.
  • Pak na druhé.
  • Pak na třetí.

V důsledku posloupnosti možností použití jedné funkce jsme text v PHP ořízli tak, jak je to nutné k vyřešení úlohy.

Nestandardní způsoby

Pokud neuvažujeme celou škálu řetězcových funkcí jazyka, pak dvojice funkcí explode()/implode() a funkce str_replace() umožňují řešit nestandardní úlohy „ořezávání“ řetězcové informace.

Výsledek MySQL dotazu je ve struktuře výstupních informací vždy formální a obsah polí (prvků) výsledku vždy určuje zdroj, tedy vývojář, který databázi navrhl.

Toto je konkrétní příklad, ale přesně odpovídá na otázku: jak přeříznout řetězec v PHP, když je tam mnoho řetězců. Zvláštností je funkce trm() a její historii určují úkoly, kdy nebylo mnoho informací a nebylo potřeba ořezávat něco jiného než nepodstatné znaky.

Dnes informace kolují ve velkém a stříhat řádek po řádku je nejen zbytečné, ale i iracionální.

Rozdělení na komponenty je také možností, jak oříznout řetězec. PHP automaticky exploduje () rozřeže jeden velký text na mnoho potřebných řádků. Pomocí funkce str_replace() - tedy nahrazením jednoho výskytu znaků jiným - můžete dosáhnout podobného efektu.

Dynamika a objem informací, které je potřeba zpracovat, je v prvé řadě adekvátním řešením, a ne použití jedné speciální funkce.