Онлайн консултация за поддръжка на уебсайтове в Уляновск: ICQ# 179104682

Как да отрежете низ на кирилица с използвайки PHP

Дата на поставяне на статията: 01.06.2014 г

Създаването на сайт в Уляновск със сериозна функционалност и взаимодействие с бази данни много често изисква определен ред да не надвишава определен определен обем. Това може да е необходимо, например, за да се ограничи броят на символите, предавани на сървъра на базата данни с помощта на полето за въвеждане, за да се покаже само част от реда на страницата на сайта (например, когато се генерират новинарски съобщения с еднаква височина в списъка) и за много други задачи.

Първото нещо, на което се натъкват начинаещите програмисти е PHP функцияподстр. Той наистина се използва за подрязване на низове и неговият синтаксис е прост. подстр(string, int start [, int length]), където int start е началният знак, от който да започне изрязването на низа, а незадължителният параметър int length е броят знаци за изрязване. Въпреки това, за неопитен програмист може да изглежда странно, ако се опита да го използва за PHP подрязване на низ на кирилица. В резултат на операцията на substr с низ на кирилица, въпросителен знак или въпросителен знак в ромб може да се появи в края на съкратения низ и общ бройпо някаква причина изрязаните знаци са два пъти по-малко от това, което е посочено в параметъра int length. Защо се случва това?

Факт е, че руските знаци в UTF-8 имат размер от 2 байта, а латинските знаци са само 1 байт. PHP функцията substr изрязва низ точно по байтове, а не по знаци. Ако низът се състои от латински символи, тогава не се случва нищо странно, тъй като броят на символите е същият като броя на байтовете. И когато работим с кирилица, където всеки знак заема 2 байта, параметърът за дължина на int може лесно да попадне в „средата“ на знака и в резултат на това в края на линията за изрязване при извеждане ще видим, че зле -съдбен въпросителен знак в ромб.

Как правилно да изрежете част от низ с кирилица?

Решението на този проблем всъщност е много просто. За правилен PHPизрязване на низ, съдържащ символи на кирилица, трябва да използвате PHP функцията iconv_substr

Синтаксисът на функцията е прост:

iconv_substr(низ, int start[, int length[, charset]])

Пример за подрязване на низ на руски език до 80 знака с UTF-8 кодиране с помощта на iconv_substr:

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

Числото нула в примера означава, че броенето на 80 знака започва от самото начало на реда.

Адаптивното оформление на сайта включва адекватна промяна на страниците му в зависимост от устройството, използвано от посетителя. Ако по отношение на блоковите и вградените елементи, почти всичко се поддава на „автоматизация“ използвайки CSSи JavaScript, тогава при създаване на съдържание и използване на бази данни е трудно да се направи без страна на сървъра.

Обикновено изрязваме низ в PHP, когато HTML елементоформлението има ограничение за броя на видимите знаци, но това е лична задача.

Традиционно решение

Една от най-популярните и често използвани функции е substr(). Предават се два или три параметъра:

    оригинален низ; начална позиция ($iPos); дължината на подниза, който трябва да бъде изрязан ($iLen).

Последният параметър може да бъде пропуснат. Ако са посочени само два параметъра: резултатът от substr() ще бъде подниз от началната позиция ($iPos) до края оригинален низ. Ако са предадени три параметъра, съкращава PHP низа от началната позиция ($iPos) до указаната дължина ($iLen).

Избирането само на началото на низ с тази функция е възможно, когато първият параметър е нула. Ако началната позиция е отрицателна, тогава PHP ще приеме знака в позицията $iPos от края на низа като начало, от което да изреже низа. Номерирането на знаците в ред се извършва от нула.

специална функция

PHP разглежда задачата за "изрязване на низ" (в широк смисъл) в контекст: от двете страни. Исторически погледнато, това е функцията trim(), която има за цел да премахне незначителните знаци:

    пространства; прекъсвания на редове; връщане на карета; табулиране; нулеви знаци

от двата края на линията. Това е много търсена функция, особено при работа с бази данни, чийто избор често съдържа много пропуски. Когато използвате функцията explode(), често се получават допълнителни знаци от началото и края на низа.

Въпреки това, не всички разработчици използват функцията trim() в пълния й потенциал. За задачата "изрязване на низ" PHP предлага използването на втория параметър на функцията, където можете да посочите произволен набор от знаци, които трябва да бъдат елиминирани от оригиналния низ.


Важно е знаците да се премахват само от началото и от края на оригиналния низ. Важно е, че чрез манипулиране на маските на знаците за изтриване и последователността от подзадачи.

    Първо изрязваме низа в PHP с една маска. После от другата. След това на третия.

В резултат на последователността от опции за използване на една функция, ние отрязваме текста в PHP, както е необходимо за решаване на задачата.

Нестандартни начини

Ако не вземем предвид целия набор от низови функции на езика, тогава двойката функции explode()/implode() и функцията str_replace() позволяват решаването на нестандартни задачи за "изрязване" на низова информация.


Резултатът от MySQL заявка винаги е формален в структурата на изходната информация и съдържанието на полетата (елементите) на резултата винаги се определя от източника, тоест разработчика, който е проектирал базата данни.

Това е конкретен пример, но отговаря точно на въпроса: как да изрежете низ в PHP, когато има много низове. Функцията trm() е особеност и нейната история се определя от задачи, когато няма много информация и не е необходимо да се отрязва нещо различно от незначителни знаци.

Днес информацията циркулира в големи обеми и рязането ред по ред е не само ненужно, но и нерационално.

Разделянето на компоненти също е опция за това как да изрежете низ. PHP автоматично ще експлодира () ще изреже един голям текст на много необходими редове. С помощта на функцията str_replace() - тоест заместване на едно появяване на знаци с друго - можете да постигнете подобен ефект.


Динамиката и обемът на информацията, която трябва да се обработва, е на първо място адекватно решение, а не използването на една специална функция.

Програмистите много често трябва да се справят с различни функции за манипулиране на низове в php. Всички функции са представени в различни справочници, но бих искал да се огранича само до основните.

PHP функция substr - получаване на част от низ

Когато трябва да изберете пасаж с дадена дължина от низ, започващ с дадена позиция, функцията substr идва на помощ.В тази функция се предава запетая: текст, начална позиция и брой знаци. Последният параметър не е задължителен и ако липсва, резултатът от функцията ще бъде фрагмент от изходния текст от началната позиция до края на реда.

PHP функция strlen - получава дължината на низ

Тази функция връща дължината на оригиналния низ като цяло число.С тази функция можете да проверите дължината на данните, въведени от потребителя, и може би нещо друго.

Функция за изрязване на PHP - премахване на допълнителни интервали от краищата на низ

Функцията за изрязване премахва всички празни знаци от краищата на низ, включително знака за нов ред. Има също функции rtrim и ltrim, които премахват интервали в края и/или началото на низ.

PHP функция strpos - търси в рамките на низ

Функцията strpos търси подниз в низ и при успех връща позицията на началото на този подниз. След намиране на първия подниз търсенето спира.Редът на аргументите във функцията, познахте, е: изходен низ, подниз, начална позиция. Третият параметър не е задължителен, но се опитайте да запомните какъв е.

PHP функция strip_tags - премахва HTML и PHP тагове от низ

Функцията strip_tags връща отстранен низ html таговеи php. Ще ви бъде полезно, когато пишете модул за коментари на сайта си, за да не оставяте възможност на нападателите да хакнат сайта ви чрез формуляр.htmlи phpтрябва да се премахне"; echo strip_tags($text); echo strip_tags($text," ");//не премахвайте em тагове ?> Първият аргумент на функцията е изходният текст, а вторият е таговете, които не трябва да се премахват.

PHP функция strtolower - Преобразува низ в малки букви

PHP функция strtoupper - преобразува низ в главни букви

 Ако този сайт ви е бил полезен, можете да помогнете в развитието му, като поставите

Сайтът предполага адекватна промяна на страниците си в зависимост от устройството, използвано от посетителя. Ако по отношение на блоковите и вградените елементи почти всичко се поддава на „автоматизация“ с помощта на CSS и JavaScript, тогава при генериране на съдържание и използване на бази данни е трудно да се направи без страна на сървъра.

Обикновено съкращаваме низ в PHP, когато елементът на HTML оформлението има ограничение за броя на видимите знаци, но това е личен въпрос.

Традиционно решение

Една от най-популярните и често използвани функции е substr(). Предават се два или три параметъра:

  • оригинален низ;
  • начална позиция ($iPos);
  • дължината на подниза, който трябва да бъде изрязан ($iLen).

Последният параметър може да бъде пропуснат. Ако са дадени само два параметъра: резултатът от substr() ще бъде подниз от началната позиция ($iPos) до края на изходния низ. Ако са предадени три параметъра, съкращава PHP низа от началната позиция ($iPos) до указаната дължина ($iLen).

Избирането само на началото на низ с тази функция е възможно, когато първият параметър е нула. Ако началната позиция е отрицателна, тогава PHP ще приеме знака в позицията $iPos от края на низа като начало, от което да изреже низа. Номерирането на знаците в ред се извършва от нула.

специална функция

PHP разглежда задачата за "изрязване на низ" (в широк смисъл) в контекст: от двете страни. Исторически погледнато, това е функцията trim(), която има за цел да премахне незначителните знаци:

  • пространства;
  • прекъсвания на редове;
  • връщане на карета;
  • табулиране;
  • нулеви знаци

от двата края на линията. Това е много търсена функция, особено при работа с бази данни, чийто избор често съдържа много пропуски. Когато използвате функцията explode(), често се получават допълнителни знаци от началото и края на низа.

Въпреки това, не всички разработчици използват функцията trim() в пълния й потенциал. За задачата "изрязване на низ" PHP предлага използването на втория параметър на функцията, където можете да посочите произволен набор от знаци, които трябва да бъдат елиминирани от оригиналния низ.

Важно е знаците да се премахват само от началото и от края на оригиналния низ. Важно е, че чрез манипулиране на маските на знаците за изтриване и последователността от подзадачи.

  • Първо изрязваме низа в PHP с една маска.
  • После от другата.
  • След това на третия.

В резултат на последователността от опции за използване на една функция, ние отрязваме текста в PHP, както е необходимо за решаване на задачата.

Нестандартни начини

Ако не вземем предвид целия набор от низови функции на езика, тогава двойката функции explode()/implode() и функцията str_replace() позволяват решаването на нестандартни задачи за "изрязване" на низова информация.

Резултатът от MySQL заявка винаги е формален в структурата на изходната информация и съдържанието на полетата (елементите) на резултата винаги се определя от източника, тоест разработчика, който е проектирал базата данни.

Това е конкретен пример, но отговаря точно на въпроса: как да изрежете низ в PHP, когато има много низове. Функцията trm() е особеност и нейната история се определя от задачи, когато няма много информация и не е необходимо да се отрязва нещо различно от незначителни знаци.

Днес информацията циркулира в големи обеми и рязането ред по ред е не само ненужно, но и нерационално.

Разделянето на компоненти също е опция за това как да изрежете низ. PHP автоматично ще експлодира () ще изреже един голям текст на много необходими редове. С помощта на функцията str_replace() - тоест заместване на едно появяване на знаци с друго - можете да постигнете подобен ефект.

Динамиката и обемът на информацията, която трябва да се обработва, е на първо място адекватно решение, а не използването на една специална функция.