PHP: работа с низове. PHP низови функции

Уеб сайтовете могат да бъдат разделени на статични и динамични. След усвояването на HTML и CSS, които ви позволяват да направите красива визитна картичка в Интернет, много хора мислят как да създадат динамичен уебсайт в PHP. В същото време дизайнерът на оформление трябва да вземе предвид, че сега започва да изучава уеб програмиране: принципите на работа със сайта ще бъдат различни. Един от първите проблеми, с които се сблъсква начинаещият в PHP, е работата с низове, четенето и обработката им.

Струва си да се отбележи, че PHP има голям брой методи, така че трябва да започнете да ги изучавате с най-простите манипулации, като извеждане на низ, търсене, получаване или замяна на подниз, промяна на регистър и връщане на дължината на низ. Много функции не работят добре със знаци на кирилица. Затова всички примери са написани на английски за яснота. За низовете на кирилица се използват същите функции, но с префикс mb_ (например mb_strpos()). Преди да използвате аналози, трябва да разкоментирате реда в php.ini; extension=php_mbstring.dll, като просто премахнете точката и запетая.

Създаване и извеждане на низ

Ще анализираме изхода на низ към екрана с помощта на добре познатата езикова конструкция за ехо. Програмистът може веднага да изведе реда:

echo "Това е нов ред"

или първо създайте променлива и след това я отпечатайте на екрана:

$str = "Това е нов ред";

Ако трябва да покажете няколко реда в един, прибягвайте до конкатенация:

echo "Това" . "Ново". "Линия";

$str1 = "Това";

$str2 = "Ново";

$str3 = "Низ";

ехо $str1. $str2. $str3;

В последния случай екранът ще се покаже Това е NewLine. Интервал може да се добави веднага при извикване на ехо:

ехо $str1. " ". $str2. " ". $str3;

В този случай на екрана ще се покаже: „Това е нов ред“. Конкатенацията е възможна не само по време на извеждане, но и при създаване на низ:

$str1 = "Това";

$str2 = "Ново";

$str3 = "Низ";

$низ = $str1. " ". $str2. " ". $str3;

ехо $низ;

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

$сума = $i + $i; // сега $sum съдържа числото 4

ехо $i . "+". $i . " = ". $сума;

Екранът ще покаже: "2 + 2 = 4".

Сервизни символи

Да приемем, че низът е дефиниран с ($string = "Подобно на това"). След това можете абсолютно безопасно да използвате контролни последователности:

  • \n извършва подаване на ред;
  • \r връща превоз;
  • \" избягва двойните кавички:
    • echo "Низ с \"двойни\" кавички"; //Низ с двойни кавички
  • \$ избягва долара;
  • \\ избягва обратна наклонена черта.

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

Как да намерите позицията на първото появяване на подниз

Да кажем, че имаме прост ред:

Имаме и два реда с имена:

$name = "Емелян";

$anotherName = "Катрин";

Трябва да знаем дали първият ред съдържа тези две имена. За да направите това, използвайте функцията strpos($str, $search). Той връща позицията на търсения подниз, $search, ако този низ се съдържа в оригинала, $str. В противен случай функцията връща булевата стойност false. Например strpos($string, $anotherName) ще върне false, докато strpos($string, $name) ще върне цяло число. Кодът ще бъде като този (ще напишем версията, когато позицията се покаже на екрана):

$string = "Казвам се Yemelyan и съм на 27 години";

$name = "Емелян";

$anotherName = "Катрин";

echo strpos($string, $anotherName); //ще отпечата false

echo strpos($string, $name); //ще отпечата позицията на първото срещане на подниза

Моля, обърнете внимание, че номерирането на редовете започва от нула, т.е. в нашия случай последният ред ще показва числото 11 (интервалите също се броят).

Намиране на позицията на последното срещане на подниз и клопки

Ако функцията strpos() връща позицията на първото срещане, тогава нейната обратна функция strrpos() търси последното срещане на подниза.

Има някои клопки, свързани с началното номериране. Това си струва да се има предвид: в PHP работата с низове може да бъде усложнена от ограничения в сравненията. Така че е по-добре да не използвате оператора за сравнение с отрицание: strpos($str, $search)!=false. Във всяка версия на PHP примерите с такава еквивалентност може да не работят правилно, тъй като номерирането на редовете започва от нула, а в логическата интерпретация 0 е невярно. Това се отнася и за функцията strrpos().

Как да намерите броя на срещанията на подниз

Често трябва да намерите не позицията на първото или последното появяване на подниз в низ, а общия им брой. За да направите това, използвайте функцията substr_count(), която обработва поне две променливи: substr_count($str, $search). Връща цяло число. Ако е необходимо да се намали областта на търсене чрез низ, тогава към функцията се предават още две променливи: съответно началото и края на низа. Тоест функцията в този случай се извиква така: substr_count($str, $search, $start, $end). Функцията ще търси подниза $search в интервала от $start до $end на изходния низ $str. Ако низът не бъде намерен, функцията ще върне нула.

Как да промените регистъра на буквите на низ в PHP: примери

Промяната на регистъра често се използва за сравняване на низове и Да кажем, че потребителят трябва да въведе името на върховния бог в програмата.Има опция "Едно", с която ще се сравнява отговорът на потребителя. Ако въведеният текст не съвпада със съществуващия (например, потребителят пише „едно“ или „ЕДНО“), програмата ще върне false вместо true. За да се избегне това, се използва функцията за промяна на регистъра. Това често се използва, ако сайт на PHP има тагове: вместо стотици вариации на думата „личен“ („Личен“, „личен“, „ЛИЧЕН“ и т.н.) има само един таг с малки букви.

Функцията strtolower() променя главните букви на малки букви. Да кажем, че има ред $catName = "Fluffy". Функцията strtolower($catName) ще върне низа "fluffy". Можете да промените главния регистър с помощта на функцията strtoupper().

Как да намерите дължината на низ в PHP: работа с функции

Често трябва да намерите дължината на низ. Например в PHP работата с низове от този вид може да е необходима при създаване на цикъл. За да търсите низ, използвайте функцията strlen(), която връща число - броя на символите. Не трябва да забравяме, че последният знак ще има номер strlen($str)-1, тъй като номерацията започва от нула.

Получаване и заместване на подниз в PHP: работа с низове

Получаването на подниз се извършва от функцията substr(), която може да приеме два или три аргумента: substr($str, $start, $end). Да кажем, че имаме $string = "Fluffy cat" и искаме да получим подниза от втория до четвъртия знак. Тъй като номерирането започва от нула, променливата с този подниз ще изглежда така: $newString = substr($string, 1, 4). Ако въведем $newString = substr($string, 1), ще получим подниз от втория знак до последния (т.е. "luffy"). Този код е идентичен с пълния код на низ, използващ strlen(): substr($string, 1, strlen($string)).

За да замените подниз, използвайте функцията str_replace(), която приема три променливи: str_replace($subStr, $newSub, $str). За разлика от много функции, str_replace() работи коректно с кирилицата и няма аналог с префикс. Пример:

$str = "Днес времето е ужасно!";

$newStr = str_replace("ужасно", "прекрасно", $str); //Прекрасно време днес!

Преобразуване на низ в число

Всеки, който учи уеб програмиране, рано или късно трябва да конвертира низ в число. За да направите това, се използват две подобни функции: intval() и floatval(), всяка от които приема една променлива $string. Те се различават един от друг само по вида на върнатите данни: intval() връща цяло число, а floatval() връща число с плаваща запетая.

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

Преобразуване на число в низ

Често трябва да преобразувате числа в низ. Да речем, ако трябва да вземете половин число и да го повдигнете на квадрат (например проверете дали равенството е вярно: 88 x 88 + 33 x 33 = 8833). В случая се използва функцията strval(), която връща низ с число. След това можете да извършвате всички други действия с новия низ: промяна, търсене на срещане на подниз и други функции. Ако е необходимо, низът може да бъде преобразуван обратно в число, като се използва вече описаният по-горе метод.

Статията разгледа само малка част от всички функции, свързани с низове. Някои неописани функции работят със символи, но повечето не бяха включени в материала поради специфика. За да се запознаете с тези функции, трябва да продължите към четене на официалната документация на PHP, която показва най-новата информация.

Всеки уважаващ себе си уеб програмист трябва да знае езика PHP, който може да се използва за създаване на уеб страници. Този език е базиран на C и C++ и следователно има много конструкции, които са характерни за този език. Например в PHP дължината на низ се връща от функция със същото име като в C. Тази статия говори за низове, както и за операциите, които могат да се извършват върху тях.

Но преди да говорим за функции, нека дадем основно определение. Низът е поредица от знаци, всеки от които заема точно един байт. Това означава, че PHP поддържа 256 знака. От това логично следва, че в този език няма поддръжка за Unicode - все пак в Unicode има много повече знаци.

Какви операции с низове има в PHP? Дължината на низ, тяхната конкатенация (свързване), връщане на кода на символа и обратно са най-простите примери. Има и по-сложни - търсене на подниз, хеширане, инверсия. Има и такива неща като премахване на тагове, търсене по модел, разделяне на поднизове с помощта на разделител... Не можете да изброите всичко! Затова ще говорим за най-често срещаните и полезни от тях.

Първата и най-често използвана функция в PHP е дължината на низа. Нарича се strlen и приема една последователност от символи като параметър. Просто е.

$bar=strlen($foo); // $bar е равно на три

В PHP дължината на низ може да бъде нула. Такъв ред се нарича празен.

Следващата функция е конкатенация или сливане. Просто казано, прави една от две линии.

$foo=”Здравей,”;

$bar=”мир!”;

$baz=concat($foo, $bar);

ехо $baz; // ще отпечата „Здравей, свят!“

Има и две обратни функции за работа с отделни знаци. Ord - връща кода на символа, а chr - определя символа по код.

$bar=ord($foo); // $bar е 113

$baz=chr($bar); // $baz е равно на “q”

Невъзможно е да не споменем още една интересна функция - дата. В PHP низовете могат да се използват като шаблон за показване на часа. Например, ако подадете низа „H:m:s“ към дата и покажете резултата, текущото време на сървъра ще се появи на екрана, разделено с двоеточие, например „11:08:34“.

Сега нека да разгледаме функцията за експлозия. Той разделя низа на елементи, като счита посочения знак за граница на всеки. Звучи доста сложно, но всъщност всичко е съвсем ясно. Например, има ред „root|12:56:49|wheel“. Тогава можете да напишете така:

$foo=explode(“root|12:56:49|wheel”, “|”);

В резултат на това масивът $foo ще съдържа три елемента - „root“, „12:56:49“, „wheel“. Ако не посочите разделител при извикване на функция, той ще се счита за интервал по подразбиране. Има още един незадължителен параметър - максималният брой разпределени поднизове.

Следната функция премахва HTML тагове от низ. Нарича се strip_tags. Подобно на функцията за разгъване, тя има незадължителен втори параметър - списък с етикети, които трябва да бъдат оставени.

Прости функции - конкатенация, търсене на подниз, дължина на низ - PHP интерпретира доста бързо. Но обработката на търсене с помощта на шаблон или премахването на тагове може да отнеме доста дълго време. Следователно програмите трябва да бъдат компилирани компетентно, като се вземе предвид фактът, че изпълнението им отнема определено време. Нормалният скрипт трябва да работи за максимум 10 секунди и след това трябва да покаже поне част от уеб страницата, в противен случай потребителят ще я напусне. Но обикновено уеб приложенията работят много по-бързо, тъй като PHP кодът се изпълнява на сървъра и браузърът получава страница, генерирана от скрипта, която съдържа резултата от PHP скрипта.

Вмъква HTML код за прекъсване на ред преди всяко подаване на ред

  • number_format - Форматира число с разделяне на групи
  • ord - Връща ASCII кода на символ
  • parse_str - Анализира низ на променливи
  • print - Отпечатва низ
  • printf
  • quoted_printable_decode - Декодира низ, кодиран от цитирания метод за печат
  • quotemeta - Избягва специални знаци
  • rtrim - Премахва интервали от края на низ
  • sha1 - Връща SHA1 хеша на низ
  • sha1_file - Връща SHA1 хеша на файл
  • подобен_текст - Изчислява степента, в която два низа са подобни
  • soundex - Връща ключа soundex за низ
  • sprintf
  • sscanf - Анализира низ според даден формат
  • strcasecmp - Сравнение на низове без значение за малки и главни букви, което е двоично безопасно
  • strcmp - Бинарно-безопасно сравнение на низове
  • strcoll - Сравнете низове на базата на текущия локал
  • strcspn – Връща дължината на частта в началото на низа, която не съответства на маската
  • stripcslashes - Премахва екранирането на знаци, произведено от функцията addcslashes().
  • stripos - Връща позицията на първото срещане на подниз, без значение за главни и малки букви
  • stripslashes - Премахва екранирането на знаци, създадено от addslashes()
  • strip_tags - Премахва HTML и PHP тагове от низ
  • stristr - Подобно на функцията strstr, но независимо от малки и големи букви
  • strlen - Връща дължината на низ
  • strnatcasecmp - Сравняване на нечувствителни към регистър низове с помощта на алгоритъм
  • strnatcmp - Сравняване на низове с помощта на алгоритъма за "естествено подреждане".
  • strncasecmp
  • strncmp - Нечувствително към малки и главни букви, двоично безопасно сравнение на първите n знака от низове
  • strpos - Намира първото срещане на подниз в низ
  • strhrchr
  • strrev - Обръща низ
  • strripos - Връща позицията на последното срещане на подниз, без значение за главни и малки букви
  • strrpos - Намира последното срещане на знак в низ
  • strspn – Връща дължината на частта в началото на низа, съответстващ на маската
  • strstr - Намира първото срещане на подниз
  • strtok - Разделя низ
  • strtolower - Преобразува низ в малки букви
  • strtoupper - Преобразува низ в главни букви
  • strtr - Преобразува дадени знаци
  • str_ireplace - Нечувствителен към регистъра вариант на функцията str_replace().
  • str_pad - Подпълва низ с друг низ до дадена дължина
  • str_repeat - Връща повтарящ се низ
  • str_replace - Заменя търсения низ с заместващия низ
  • str_rot13 - Извършва ROT13 трансформация на низ
  • str_shuffle - Разбърква знаците в низ
  • str_split - Преобразува низ в масив
  • str_word_count - Връща информация за думите в низ
  • substr – Функцията връща част от низ
  • substr_count - Брои броя на срещанията на подниз в низ
  • substr_replace - Заменя част от низ
  • trim - Премахва интервали от началото и края на низ
  • ucfirst - Преобразува първия знак на низ в главни букви
  • ucwords - Преобразува първия знак от всяка дума в низ в главни букви
  • vprintf - Отпечатва форматиран низ
  • vsprintf - Връща форматиран низ
  • wordwrap - Обвива ред за даден брой знаци, използвайки знак за прекъсване на ред
  • Характеристики на операторите за сравнение, приложени към низове.

    $едно = 1; // Номер едно. $нула = 0; // Присвояване на числото нула. if ($one == "") ехо 1; // Очевидно не е равно - не извежда 1. if ($zero == "") echo 2; //* Внимание! Противно на очакванията, отпечатва 2! if ("" == $zero) ехо 3; //* И това също няма да помогне - отпечатва!.. if ("$zero" == "") echo 4; // Това е вярно. if (strval($zero) == "") ехо 5; // Това също е правилно - не отпечатва 5. if ($zero === "") echo 6; // Най-добрият начин, но не работи в PHP 3.

    котлет ()

    Функцията chop() връща низ след премахване на крайните интервали и нови редове. Синтаксисът на функцията chop() е:

    string chop (string string)

    В следния пример функцията chop() премахва допълнителните нови редове:

    $header = "Съдържание\n\n"; $header = chop($header); // $header = "Съдържание"

    str_pad()

    Функцията str_pad() допълва низ до определена дължина с дадените знаци и връща форматирания низ. Синтаксис на функцията str_pad():

    низ str_pad (низ низ, int pad_length [, низ pad [, int pad_type]])

    Ако незадължителният параметър за подпълване не е посочен, низът се допълва с интервали. В противен случай низът се допълва с дадените знаци. По подразбиране линията е подплатена отдясно; можете обаче да подадете параметъра padding_type STR_PAD_RIGHT, STR_PAD_LEFT или STR_PAD_BOTH, който ще подпълни реда в указаната посока. Примерът демонстрира подпълване на низове с функцията str_pad() с параметри по подразбиране:

    $food = "салата"; print str_pad ($food, 5): // Отпечатва низа "salad" Следващият пример използва незадължителните параметри на функцията str_pad(): $header = "Съдържание"; print str_pad ($header, 5, "= +=+=" , STR_PAD_BOTH); // Браузърът показва реда =+=+= Съдържание=+=+="

    подстригване ()

    Функцията trim() премахва всички бели интервали от двата края на низ и връща резултантния низ. Синтаксис на функцията Trim():

    подстригване на низ (държава на низа]

    Специалните знаци \n, \r, \t, \v и \0 също са включени в празното пространство, което се премахва.

    ltrim()

    Функцията lrim() премахва всички интервали и специални знаци от левия край на низ и връща получения низ. Синтаксис на функцията ltrim():

    низ ltrim (низ низ)

    Функцията премахва същите специални знаци като функцията trim().

    strlen()

    Определяне на дължината на низа

    Дължината на низ в символи може да се определи с помощта на функцията strlen(). Синтаксис на функцията strlen():

    int strlen (низ низ)

    Следният пример демонстрира как да определите дължината на низ с помощта на функцията strlen():

    $string = "здравей"; $length = strlen($string); // $length = 5

    Сравняване на два низа

    Сравняването на два низа е една от най-важните операции с низове във всеки език. Въпреки че този проблем може да бъде решен по няколко различни начина, в PHP има четири функции за сравнение на низове:

    strcmp()

    Функцията strcmp() сравнява два низа по начин, чувствителен към малки и главни букви. Синтаксис на функцията strcmp(): int strcmp (низ низ1, низ низ2)

    След като сравнението приключи, strcmp() връща една от три възможни стойности:

    • 0, ако ред1 и ред2 са еднакви;
    • < 0, если строка1 меньше, чем строка2;
    • > 0, ако низ2 е по-малък от низ1.

    $sthng1 = "масло"; $string2 = "масло"; if ((strcmp($string1. $string2)) == 0) : print "Низовете са еквивалентни!"; endif; // Командата if връща TRUE

    strcasecmp()

    Функцията strcasecmp() работи точно по същия начин като strcmp(), с едно изключение - сравнението не взема предвид регистъра на буквите. Синтаксисът на функцията strcasecmp() е:

    int strcasecmp (низ низ1, низ низ2)

    Следният фрагмент сравнява два идентични низа:

    $string1 = "масло"; $string2 = "Масло"; if ((strcmp($string1, $string2)) == 0) : print "Низовете са еквивалентни!"; endif; // Командата if връща TRUE

    strspn()

    Функцията strspn() връща дължината на първия сегмент от string1, съдържащ символите в string2. Синтаксисът на функцията strspn() е:

    int strspn (низ низ1, низ низ2)

    Следният фрагмент показва как функцията strspn() се използва за проверка на парола:

    $парола = "12345"; if (strspn($password, "1234567890") != strlen($password)) : print "Паролата не може да се състои само от числа!"; endif:

    strcspn()

    Функцията strcspn() връща дължината на първия сегмент от string1, който съдържа знаци, които не присъстват в string2. Синтаксис на функцията strcspn():

    int strcspn (низ низ1, низ низ2)

    Следният фрагмент използва функцията strcspn() за проверка на паролата:

    $парола = "12345"; if (strcspn($password, "1234567890") == 0) : print "Паролата не може да се състои само от числа!"; endif;

    Обработка на низови данни без използване на регулярни изрази

    Когато обработвате големи количества информация, функциите на регулярния израз значително забавят изпълнението на програмата. Тези функции трябва да се използват само при обработка на относително сложни низове, където регулярните изрази са наистина необходими. Ако анализът на текста се извършва по сравнително прости правила, можете да използвате стандартни PHP функции, които значително ускоряват обработката. Всички тези функции са описани по-долу.

    strtok()

    Функцията strtok() разделя низ на токени, използвайки разделителите, зададени от втория параметър. Синтаксисът на функцията strtok() е:

    string strtok (низ от низове, разделители на низове)

    Функцията strtok() има едно странно нещо: за да се раздели напълно низ, функцията трябва да бъде извикана няколко последователни пъти. При следващото извикване на функцията тя извлича следващия токен от низа. В този случай параметърът на низа се посочва само веднъж - функцията проследява текущата позиция в низа, докато низът бъде напълно анализиран на токени или бъде указан нов параметър на низ. Следният пример демонстрира разделяне на низ с помощта на множество разделители:

    $info = "WJ Gi1more: [имейл защитен]| Кълъмбъс, Охайо"; // Разделители - двоеточие (:), вертикална лента (|) и запетая (.) $tokens = ":|,"; $tokenized = strtok($info, $tokens); // Отпечатване на елементи от масив $tokenized докато ($tokenized) : echo "Елемент = $tokenized
    "; // Моля, имайте предвид, че следващите извиквания към strtok // не предават първия аргумент $tokenized = strtok($tokens); endwhile; Резултат: Елемент = WJGilmore Елемент = [имейл защитен]Елемент = Колумб Елемент = Охайо

    parse_str()

    Функцията parse_str() анализира двойки в низ и присвоява стойности на променливи в текущия обхват. Синтаксис на функцията parse_str():

    void parse_str (низ низ)

    Функцията parse_str() е особено полезна, когато анализирате URL адреси, съдържащи данни от HTML формуляр или друга богата информация. Следващият пример анализира информацията, предадена през URL. Низът е стандартен начин за предаване на данни между страниците, компилиран в хипервръзка или въведен в HTML формуляр:

    $url = "fname=wj&lname=gilmore&zip=43210"; parse_str($url); // След изпълнение на parse_str() са налични следните променливи: // $fname = "wj": // $lname = "gilmore"; // $zip = "43210"

    Тъй като тази функция е проектирана да работи с URL адреси, тя игнорира знака амперсанд (&).

    експлодирам ()

    Функцията explode() разделя низ на елементи и връща тези елементи като масив. Синтаксис на функцията Explode():

    разрушаване на масив (разделител на низ, низ низ [, int праг])

    Разделянето се извършва на всеки екземпляр на разделителя и броят на получените фрагменти може да бъде ограничен от незадължителния параметър за праг.

    Функцията explode() демонстрира разделяне на низ в следния пример:

    $info = "уилсън | бейзбол | индианци"; $user = explode("|", $info); // $user = "wilson"; // $user = "бейзбол"; // $user = "индианци";

    Функцията explode() е почти идентична с функцията за регулярен израз POSIX split(), описана по-горе. Основната разлика е, че предаването на регулярни изрази като параметри е разрешено само при извикване на split().

    експлозия()

    Ако функцията explode() разделя низ на елементи от масив, нейният аналог, функцията implode(), обединява масива в низ. Синтаксис на функцията Implode():

    имплодиране на низ (разделител на низове, фрагменти от масив)

    Формирането на низ от масив е демонстрирано в следния пример:

    $ohio_cities = array("Кълъмбъс", "Янгстаун", "Кливланд", "Синсинати"); $city_string = implode("l", $ohio_cities); // $city_string = "Кълъмбъс | Йънгстаун | Кливланд | Синсинати";

    implode() има псевдоним, функцията join().

    strpos()

    Функцията strpos() намира първото копие на даден подниз в низ. Синтаксис на функцията strpos():

    int strpos (низ от низ, подниз от низ [, int отместване])

    Незадължителният параметър за отместване указва позицията, от която трябва да започне търсенето. Ако поднизът не бъде намерен, strpos() връща FALSE (0).

    Следният пример определя позицията на първото появяване на дата в регистрационния файл:

    $log = "206.169.23.11:/www/:2000-08-10 206.169.23.11:/www/logs/:2000-02-04 206.169.23.11:/www/img/:1999-01-31"; // На коя позиция в списанието за първи път се появява 1999 г.? $pos = strpos($log, "1999"); // $pos = 95. защото първото копие на "1999" // е на позиция 95 на реда, съдържащ се в променливата $log

    strpos()

    Функцията strrpos() намира последното копие на даден знак в низ. Синтаксисът на функцията strrpos() е:

    int strpos (низ низ, символ char)

    По отношение на възможностите тази функция е по-ниска от своя аналог - функцията strpos(), тъй като ви позволява да търсите само за един знак, а не за целия низ. Ако низ бъде предаден като втори параметър на strrpos(), при търсенето ще се използва само неговият първи знак.

    str_replace()

    Функцията str_replace() търси в низ всички срещания на даден подниз и ги замества с нов подниз. Синтаксис на функцията str_replace():

    низ str_replace (низ подниз, замяна на низ, низ низ)

    Функцията substr_replace(), описана по-късно в този раздел, ви позволява да замените само определена част от низ. Следното показва как функцията str_replace() се използва за извършване на глобална замяна на низ.

    Ако поднизът никога не се появи в низа, оригиналният низ остава непроменен:

    $favorite_food = "Любимите ми храни са сладолед и пилешки крилца"; $favorite_food = str_replace("chicken_wings", "pizza", $favohte_food); // $favorite_food = "Любимите ми храни са сладолед и пица"

    strstr()

    Функцията strstr() връща частта от низ, започващ с първото срещане на даден подниз. Синтаксис на функцията strstr():

    низ strstr (низ низ, низ подниз)

    Следващият пример използва функцията strstr() за извличане на име на домейн от URL адрес:

    $url = "http://www.apress.com"; $domain - strstr($url, "."); // $domain = ".apress.com"

    substr()

    Функцията substr() връща частта от низ, започваща от дадена начална позиция и имаща дадена дължина. Синтаксис на функцията Substr():

    низ substr (низ низ, int начало [, int дължина])

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

    • ако началният параметър е положителен, върнатият подниз започва от позицията на реда с даденото число;
    • ако началният параметър е отрицателен, върнатият подниз започва от позиция (дължина на низ - начало);
    • ако дължината е положителна, върнатият подниз включва всички знаци от начало до начало+дължина. Ако последната стойност надвишава дължината на низа, се връщат символи до края на низа;
    • ако дължината е отрицателна, върнатият подниз завършва на указаното разстояние от края на низа.

    Не забравяйте, че началният параметър определя отместването от първия знак на реда; така че върнатият низ всъщност започва с номер на символ (начало + 1).

    Следният пример демонстрира substr() substring substring:

    $car = "1944 Ford"; Smodel = substr($car, 6); // Smodel = "Ford"

    Пример с положителен параметър за дължина:

    $car = "1944 Ford"; $model = substr($car, 0, 4); // $model = "1944" Пример с отрицателен параметър за дължина: $car = "1944 Ford"; $model = substr($car, 2, -5); // $model = "44"

    substr_count()

    Функцията substr_count() връща броя на срещанията на подниз в даден низ. Синтаксисът на функцията substr_count() е: int substr_count (низ от низ, подниз от низ) В следващия пример функцията substr_count() отчита броя на срещанията на подниза ain: $tng_twist = "Дъждът вали главно в равнините на Испания“; $count = substr_count($tng_twist, "ain"); // $count = 4

    substr_replace()

    Функцията substr_replace() замества частта от низ, която започва от дадена позиция. Ако е зададен опционалният параметър за дължина, фрагмент с посочената дължина се заменя; в противен случай заместването се извършва по цялата дължина на заместващия низ. Синтаксисът на функцията substr_replace() е:

    низ substr_replace (низ низ, замяна на низ, int начало [, int дължина])

    Параметрите за начало и дължина се задават съгласно определени правила:

    • ако началният параметър е положителен, замяната започва от посочената позиция;
    • ако началният параметър е отрицателен, заместването започва от позиция (дължина на низ -начало);
    • ако параметърът за дължина е положителен, фрагмент с посочената дължина се заменя;
    • ако дължината е отрицателна, заместването завършва на позиция (дължина на низ -дължина).

    Простата замяна на текст с помощта на substr_replace() е демонстрирана в следния пример:

    $favs = " "s любими връзки"; $name = "Alessia"; // Параметри "0, 0" означават, че фрагментът, който трябва да бъде заменен, започва // и завършва на първата позиция на реда. $favs - substr_replace( $favs, $name , 0, 0); отпечатайте $favs:

    Резултат:

    Любимите връзки на Alessia

    Преобразуване на низове и файлове в HTML формат и обратно

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

    Конвертиране на текст в HTML

    Бързото преобразуване на обикновен текст във формат на уеб браузър е много често срещана задача. Функциите, описани в този раздел, ще ви помогнат да го разрешите.

    nl2br()

    Функцията nl2br() заменя всички знаци за нов ред (\n) с еквивалентни HTML конструкции.

    Синтаксис на функцията nl2br():

    низ nl2br (низ низ)

    Знаците за нов ред могат да бъдат видими (т.е. изрично включени в реда) или невидими (например въведени в редактора). Следният пример преобразува текстов низ в HTML формат, като заменя символите \n с нови редове:

    // Текстов низ, показан в редактора. $text_recipe = "Рецепта за парти сос: 1 консерва задушени домати 3 супени лъжици пресен лимонов сок Разбъркайте заедно, сервирайте студено."; // Преобразуване на нови редове в
    $htinl_recipe = nl2br($text_recipe) Последващият изход на $html_recipe ще върне следния HTML текст в браузъра: Рецепта за парти сос:
    1 консерва задушени домати
    3 супени лъжици пресен лимонов сок
    Разбъркайте заедно, сервирайте студено.

    htmlentities()

    Функцията htmlentities() преобразува символи в еквивалентни HTML конструкции. Синтаксисът за функцията htmlentities е:

    низ htmlentities (низ низ)

    Следващият пример извършва необходимото заместване на низови знаци за изход към браузъра:

    $user_input = "Готварската книга, озаглавена Cafe Francaise" струва

    Функцията htmlentities() в момента работи само за кодиращи знаци ISO-8559-1 (ISO-Latin-1). Освен това не преобразува интервали, както бихте очаквали.

    htmlspecialchars()

    Функцията htmlspecialchars() замества определени знаци, които имат специално значение в контекста на HTML с еквивалентни HTML конструкции. Синтаксис на функцията htmlspecialchars():

    низ htmlspecialchars (низ низ)

    Функцията html special chars() в момента преобразува следните знаци: & преобразува в &; " " се преобразува в "; се преобразува в >.

    По-конкретно, тази функция помага на потребителите да не въвеждат HTML маркиране в интерактивни уеб приложения (като онлайн форуми). Грешките в HTML маркирането могат да причинят неправилно оформяне на цялата страница. Има обаче по-ефективно решение на този проблем - напълно премахване на тагове от низ чрез функцията strip_tags().

    Следният пример демонстрира премахването на потенциално опасни знаци от функцията htmlspeclalchars():

    $user_input = "Просто не мога да получа на PHP и тези невероятни рецепти за готвене!"; $conv_input = htmlspecialchars($user_input); // $conv_input = "Просто не мога<> на PHP и тези невероятни готварски рецепти!"

    Ако функцията htmlspecialchars() се използва в комбинация с nl2br(), тогава последната трябва да се извика след htmlspecialchars(). Иначе дизайните
    , генерирани при извикването на nl2br(), се преобразуват във видими знаци.

    get_html_translation_table()

    Функцията get_html_translation_table() осигурява удобно средство за конвертиране на текст в HTML еквиваленти. Синтаксисът на функцията get_htrril_translation_table() е:

    низ get_html_translation_table (int таблица)

    Функцията get_html_translation_table() връща една от двете таблици за превод (дефинирани от параметъра table), използвани при работата на стандартните функции htmlspecialchars() и htmlentities(). Върнатата стойност може да се използва в комбинация с друга стандартна функция, strtr(), за преобразуване на текст в HTML код.

    Параметърът на таблицата приема една от двете стойности:

    • HTML_ENTITIES;
    • HTML_SPECIALCHARS.

    Следващият пример използва функцията get_html_translation_table() за преобразуване на текст в HTML:

    $string = "La pasta e il piatto piu amato in Italia"; $translate = get_html_translation_table(HTML_ENTITIES); print strtr($string, $translate); // Специалните символи се преобразуват в HTML конструкции // и се изобразяват правилно в браузъра.

    Между другото, функцията array_flip() ви позволява да конвертирате текст в HTML в обратна посока и да възстановите оригиналния текст. Да предположим, че вместо да отпечатаме резултата от strtr() в предишния пример, сме го присвоили на променливата $translated string.

    В следния пример оригиналният текст се възстановява от функцията array_flip():

    $translate = array_flip($translate); $translated_string - "La pasta é il piatto piú amato in Italia"; $original_string = strtr($translated_string, $translate); // $original_string = "La pasta e il piatto piu amato in Italia";

    strtr()

    Функцията strtr() преобразува низ, т.е. замества всички знаци в изходния низ със съответните знаци в целевия низ. Синтаксис на функцията strtr():

    низ strtr (низ низ, източник на низ, местоназначение на низ)

    Ако низовете източник и дестинация са с различна дължина, дългият низ се съкращава, за да пасне на късия низ.

    Има алтернативен синтаксис за извикване на strtr() с два параметъра; в този случай вторият параметър съдържа асоциативен масив, чиито ключове съответстват на заместваните поднизове и чиито стойности съответстват на заместващите поднизове. Следният пример заменя HTML таговете с XML-подобни конструкции:

    " => "

    ", "" => "

    "); $низ = "

    Днес в новини, базирани на PHP

    "; print strtr($string, $source); // Отпечатва низа " Днес в новините, базирани на PHP" ?>

    Конвертирайте HTML в обикновен текст

    Понякога трябва да конвертирате HTML файл в обикновен текст. Функциите, описани по-долу, ще ви помогнат с тази задача.

    strip_tags()

    Функцията strip_tags() премахва всички HTML и PHP тагове от низ, оставяйки само текст в него. Синтаксисът на функцията strip_tags() е:

    низ strip_tags (низ низ [, низ разрешен_terri])

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

    По-долу е даден пример за премахване на всички HTML тагове от низ с помощта на strip_tags():

    $user_input = "Аз просто любов PHP и гастрономрецепти!"; $stripped_input = strip_tags($user_input); // $stripped_input = "Просто обичам PHP и гурме рецепти!";

    Следният пример премахва не всички, а само някои тагове:

    $input = "Аз любовда се Яжте!!"; $strip_input = strip_tags ($user_input, " "); // $strip_input = "Обичам Яжте!!";

    Премахването на етикети от текст също се извършва от функцията fgetss().

    get_meta_tags()

    Въпреки че функцията get_meta_tags() не е пряко свързана с трансформацията на текст, тя е много полезна функция, която си струва да се спомене. Синтаксис на функцията Get_meta_tags():

    масив get_meta_tags (низ file_name/URL [, int include_path])

    Функцията get_meta_tags() е предназначена за търсене в HTML файл за META тагове.

    META таговете съдържат информация за дадена страница, използвана предимно от търсачките. Тези тагове са вътре в чифт тагове... . Използването на META тагове е демонстрирано в следния фрагмент (нека го наречем example.html, защото ще бъде използван в листинг 8.2): PHP рецепти Функцията get_meta_tags() търси в главата на документа тагове, които започват с думата META и съхранява имена на тагове и тяхното съдържание в асоциативен масив. Листинг 8.2 демонстрира тази функция, приложена към файла example.html. Списък 8.2. Извличане на META тагове от HTML файл чрез get_meta_tags()

    $meta_tags = get_meta_tags("example.html"): // Променливата $meta_tags съдържа масив със следната информация: // $meta_tags["keywords"] = "PHP, код, рецепти, уеб" // $meta_tags[ "description" ] = "PHP информация" // $meta_tags["author"] = "KDG";

    Интересна подробност: данните от META таговете могат да бъдат извлечени не само от файлове, разположени на сървъра, но и от други URL адреси.

    Преобразуване на низ в главни и малки букви

    В PHP има четири функции, предназначени да променят регистъра на буквите на низ:

    strtolower()

    Функцията strtolower() преобразува всички азбучни знаци в низ в малки букви. Синтаксисът на функцията strtolower() е:

    низ strtolower(низ низ)

    Неазбучните знаци не се променят от функцията. Преобразуването на низ в малки букви с помощта на функцията strtolower() е демонстрирано в следния пример:

    $sentence = "ГОТВЕНЕТО и ПРОГРАМИРАНЕТО PHP са моите ДВА любими!"; $изречение = strtolower($изречение); // След извикването на функцията, $sentence съдържа низа // "готвенето и програмирането на php са двата ми любими!"

    strtoupper()

    Низовете могат да се преобразуват не само в малки, но и в главни букви. Преобразуването се извършва от функцията strtoupper(), която има следния синтаксис:

    низ strtoupper (низ низ)

    Неазбучните знаци не се променят от функцията. Преобразуването на низ в главни букви с помощта на функцията strtoupper() е демонстрирано в следния пример:

    $sentence = "готвенето и програмирането на PHP са двете ми любими!"; $изречение = strtoupper($изречение); // След извикването на функцията, $sentence съдържа низа // "ГОТВЕНЕТО И ПРОГРАМИРАНЕТО PHP СА МОИТЕ ДВА ЛЮБИМИ!"

    ucfirst()

    Функцията ucfirst() преобразува първия знак от низ в главна буква, при условие че е азбучен знак. Синтаксис на функцията ucfirst():

    низ ucfirst (низ низ)

    Неазбучните знаци не се променят от функцията. Преобразуването на първия символ на низ от функцията ucfirst() е демонстрирано в следния пример:

    &sentence = "готвенето и програмирането на PHP са любимите ми двама!"; $изречение = ucfirst($изречение); // След извикването на функцията, $sentence съдържа низа // "Готвенето и програмирането на PHP са моите две любими!"

    ucwords()

    Функцията ucwords() преобразува първата буква от всяка дума в низ в главна буква. Синтаксис на функцията ucwords():

    низ ucwords (низ низ")

    Неазбучните знаци не се променят от функцията. „Думата“ се дефинира като поредица от знаци, разделени от други елементи на низ с интервали. Следният пример демонстрира как функцията ucwords() преобразува първите знаци на думите:

    $sentence = "готвенето и програмирането на PHP са двете ми любими!"; $изречение = ucwords($изречение); // След извикването на функцията, $sentence съдържа низа // "Готвенето и програмирането на PHP са двете ми любими!"

    strhr()

    strrchr("низ", "о") - Намира последното срещане на подниз

    Ако поднизът не бъде намерен, връща FALSE.

    За разлика от strchr(), ако низът за търсене се състои от повече от един знак, се използва само първият знак.

    Ако вторият параметър не е низ, той се преобразува в цяло число и се третира като символен код.

    // вземете последната директория от $PATH $dir = substr(strrchr($PATH, ":"), 1); // получава всичко след последния прекъсващ ред $text = "Ред 1\nРед 2\nРед 3"; $последен = substr(strrchr($text, 10), 1);

    highlight_string()

    highlight_string - синтаксис на подчертаване на низ.

    смесен highlight_string (string str [, bool return])

    Функцията highlight_string() извежда оцветена в синтаксис версия на str, използвайки цветовете, дефинирани във вграденото осветяване на синтаксиса на PHP.

    Ако вторият върнат параметър е TRUE, тогава highlight_string() ще върне маркираната версия на кода като низ, вместо да я отпечата. Ако вторият параметър не е TRUE, highlight_string() ще върне TRUE при успех, FALSE при неуспех.

    Забележка: 1.параметърът за връщане стана достъпен от PHP 4.2.0. Преди това работеше по подразбиране, т.е. НЕВЯРНО.
    2. Функцията Highlight_String() разграничава PHP кода чрез тагове. show_source()- синоним highlight_file(). За да промените цвета на осветяването по подразбиране, използвайте следните PHP директиви:

    Highlight.bg #FFFFFF highlight.comment #FF8000 highlight.default #0000BB highlight.html #000000 highlight.keyword #007700 highlight.string #DD0000 в .htaccess: php_flag highlight.bg #FFFFFF в PHP: if(@ini_get("highlight .bg")=="") ...

    добавя наклонени черти()

    - Екранира специални знаци в низ

    Връща низ с обратна наклонена черта (\), добавен преди всеки специален знак, например за по-късно използване на този низ в заявка към база данни.

    Единичните кавички ("), двойните кавички ("), обратната наклонена черта (\) и NUL (NULL байт) се екранират.

    $str = "Вашето име O"reilly ли е?"; // извежда: Вашето име O\"reilly ли е? ехо добавя наклонени черти ($str);

    ленти наклонени черти

    - Премахва екраниращите знаци, произведени от функцията addslashes() Премахва екраниращите обратни наклонени черти. (\" се преобразува в "и т.н.). Двойните обратни наклонени черти (\\) се преобразуват в единични обратни наклонени черти (\).

    обвиване на думи ()

    Обвива ред за даден брой знаци, като използва нов ред // Използване на wordwrap(). функция cite($ourText, $maxlen=60, $prefix="> ") ( $st = wordwrap($ourText, $maxlen-strlen($prefix), "\n"); $st = $prefix.str_replace( "\n", "\n$prefix", $st); return $st; ) echo cite("Първата Матрица беше съвсем естествено съвършена, беше произведение на изкуството - безупречно, възвишено. Триумф, равен само на неговият монументален провал. Неизбежността на гибелта му е очевидна за мен сега като следствие от несъвършенството, присъщо на всяко човешко същество. Затова го преработих въз основа на вашата история, за да отразява по-точно различните гротески на вашата природа. Въпреки това бях отново разочарован от провала.", 20);

    > Първият Matrix I > проектиран беше съвсем > естествено > перфектен, беше > произведение на изкуството - > безупречно, възвишено. > Триумф > равен само на > неговия монументален > провал. > Неизбежността > на неговата гибел е > очевидна за мен сега > като следствие > от > несъвършенството > присъщо на всяко > човешко същество. , > Аз > го преработих > въз основа на > вашата > история, за да отразява по-точно > различните > гротески на > вашата природа. > Въпреки това бях > отново > разочарован от > провала.


    Прочетете повече: Обектно програмиране в PHP
    .

    Струните са едни от основните типове променливи в PHP. И трябва да работите с тях точно като с числа, булеви променливи и масиви. Разбира се, разработчиците PHPза да ни е по-лесно работа с низове, вече са вградили много готови функции за нас. И ще говорим за най-често използваните.

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

    $str = "Това е моят низ";
    echo strlen($str);
    ?>

    Мисля, че тази функция няма нужда от коментар.

    Има и две често използвани низови функции- Това strtolower()И strtoupper(). Тези функции ви позволяват да конвертирате низ съответно в малки и главни букви:

    $str = "Това е моят низ";
    ехо strtolower($str)."
    ";
    ехо strtoupper($str);
    ?>

    Много полезна функция за низове е substr()който връща подниз от оригиналния низ:

    $str = "Това е моят низ";
    echo substr($str, 1)."
    ";
    echo substr($str, 4, 2)."
    ";
    ?>

    Както можете да видите, тази функция може да съдържа два или три параметъра. Първият параметър е изходният низ, вторият параметър е номерът на знака в изходния низ, който след това ще стане първият в резултантния низ. Забележка: номерацията на знаците започва от 0(тоест в нашия пример, 1-восимвол - " ч"). Третият параметър означава дължината на низа, който искаме да получим. Ако този параметър не е посочен, тогава низът се връща, започвайки от втория параметър и до края на низа. Като цяло, вижте резултат и всичко ще ви стане ясно.

    Още един полезен функция за низ в PHP- Това str_replace(). Както подсказва името, тази функция връща низ със заменена част:

    $str = "Това е моят низ";
    echo str_replace("моят", "вашият", $str);
    ?>

    Резултатът е следният ред: " Това е вашият низ". Тоест тази функция замени низа, посочен от първия параметър, с низа, посочен от втория параметър в низа, посочен от третия параметър, и върна резултата.

    И последната функция, която ще разгледаме е strpos(). Тази функция търси срещане на подниз в низ и връща номера на първия символ на срещането (не забравяйте, че номерацията на знаците започва от 0, а не от 1):

    $str = "Това е моят низ";
    echo strpos($str, "е");
    ?>

    Както можете да видите, тази функция е много проста и много важна, тъй като ви позволява да търсите в низ. Също функции strpos().Има още един незадължителен параметър, който определя отместването. Нека ви напомня, че тази функция търси първото срещане. Например в нашия пример " е" се среща два пъти в низа, но тази функция върна номера на знака за първото срещане. Следователно, за да получите номерата на други срещания, трябва да зададете третия параметър - отместването:

    $str = "Това е моят низ";
    echo strpos($str, "е", 4);
    ?>

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

    $str = "Това е моят низ";
    if (strpos($str, "Th") == false) echo "Низът не е намерен";
    else echo "Намерен низ";
    ?>

    Очевидно е, че " Th" се съдържа в оригиналния низ, а номерът на знака на първото срещане е 0 . Но ако стартирате този скрипт, ще видите, че " низът не е намерен„Защо? Ако прочетете статията за оператор за еквивалентност, тогава можете да отговорите на този въпрос без никакви проблеми. Ако обаче не, тогава ще обясня. Факт е, че тъй като имаме функция strpos()се завърна 0 , А 0 от гледна точка PHP- Това невярно, тогава той лесно заключи, че условието е вярно (все пак отляво невярнои надясно невярно). Какво трябва да направя? Отговорът е прост: използвайте оператора за еквивалентност (обозначен === ), който сравнява не само стойностите (които в нашия пример са равни за PHP), но и техните видове:

    $str = "Това е моят низ";
    if (strpos($str, "Th") === false) echo "Низът не е намерен";
    else echo "Намерен низ";
    ?>

    И сега ще видите, че " намерен низ". Както виждаш, оператор за еквивалентностможе да се обяви във всеки един момент и винаги трябва да помните за това, в противен случай няма да можете да избегнете трудни грешки.

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

    дължина в символи (7)

    => string(141) означава, че $message е масив, така че трябва да направите strlen($message)< 141 ...

    Имам низ с дължина 141 знака. Използвайки следния код, имам оператор if за връщане на съобщение, ако низът е по-голям или по-малък от 140.

    Libxml_use_internal_errors(TRUE); $dom = нов DOMDocument(); $dom->loadHTMLFile($source); $xml = simplexml_import_dom($dom); libxml_use_internal_errors(FALSE); $message = $xml->xpath("//div[@class="contest"]"); if (strlen($message)< 141) { echo "There Are No Contests."; } elseif(strlen($message) >142) ( echo "Има едно активно състезание."; )

    Използвах var_dump в $message и показва string => string(141), това е моят проблем. Когато променя числата за оператора if на<130 и>131, той все още връща първото съобщение, въпреки че редът е по-голям от 131. Без значение кое число използвам по-малко от 141, винаги получавам „Без конкурс“. се върна при мен.

    => string(141) означава, че $message е масив, а не низ, а $message е низ с дължина 141 знака

    xpath не връща низ. Той връща масив с xml елементи, които могат да бъдат изпратени до низ.

    If (count($message)) ( if (strlen((string)$message)< 141) { echo "There Are No Contests."; } else if(strlen((string)$message) >142) ( echo "Има един активен конкурс."; ) )

    вместо това опитайте общия синтаксис:

    Ако (strlen($message)<140) { echo "less than 140"; } else if (strlen($message)>140) ( echo "повече от 140"; ) else ( echo "точно 140"; )

    Тъй като $xml->xpath винаги се връща масив , strlen чака линия .

    Имах проблеми с това и най-накрая реших да създам свое собствено решение. Без да използвате механизма за регулярен израз:

    Функцията съдържа ($text, $word) ( $found = false; $spaceArray = explode(" ", $text); $nonBreakingSpaceArray = explode(chr(160), $text); if (in_array($word, $spaceArray) ) || in_array($word, $nonBreakingSpaceArray)) ( $found = true; ) return $found; )

    Може да забележите, че предишните решения не са отговор на използването на дума като префикс за друга. За да използвам вашия пример:

    $a = "Как си?"; $b = "пола, която се простира от талията"; $c = "са";

    С примерите по-горе и $a, и $b съдържат $c, но може да искате вашата функция да ви каже, че само $a съдържа $c.



    Свързани публикации