PHP стрингове (Strings)

PHP е скриптов език със синтаксис базиран на C и отчасти Perl. Използва се предимно в Web среда за създаване на широк кръг от услуги. Той е един от най-популярните езици за програмиране в Интернет и популярността му расте непрекъснато.

PHP се разпространява под отворен лиценз (PHP License), който по своята същност е BSD лиценза и който позволява безплатно разпространяване на програмния код на интерпретатора на езика, както и създаването на деривати под други лицензи с уговорката, че тези деривати не могат да включват PHP в името си. Фактът, че PHP се разпространява безплатно, го прави удачен избор за изграждане на Web-сървър базиран изцяло на безплатни продукти – GNU/Linux, Apache, MySQL/PostgreSQL и др.

PHP стрингове

(php strings)
Колко са важни те? Отговорът е ясен – много. В повечето случаи вземате информация от потребителя, било то форма за запитване, някаква регистрация или просто мнение в анкета. Както споменах преди, текстът се представя като символен низ, т.е. масив от последователни символи. В РНР променливите ви могат да са от тип символен низ, но това не значи, че вие имате достъп до тях като масив. Вие ги обработвате като обикновенна променлива с допълнителни операции. Ето най съществената:

$ERRS = “The file”.$file.”не може да бъде отворен!”;

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

implode(“разделител”, “текст”, лимит);

Разделителя е символът, спрямо който ще се раздели текста, а лимит е най-големия брой разделяния. След достигането им, останалия текст се записва в посления елемент от масива. Нека разгледаме следния пример:

$pizza  = “piece1 piece2 piece3 piece4 piece5 piece6″;

$pieces = explode(” “, $pizza);

echo $pieces[0]; // piece1

echo $pieces[1]; // piece2

echo $pieces[6]; // piece6

Тук в PHP стринга  $pizza думите са с отстояние един интервал. Ето защо ние ги разделяме с explode на интервали, като получаваме масив $pieces с отделните думи. Ако да кажем ни интересуват само първите 2 парчета, поставяме лимит 2. Така ще имаме масив с 3 елемента – две думи и един низ от останалите думи. Ако по някаква причина ни трябва да използваме стринга като масив от символи(думите пак са низ от символи), ще използваме разделител празния символ, т.е. “”. Така ще разделим всеки символ от предишния.
Както подсказва и името на функцията, трябва да има и обратна тя е implode. Синтаксисът й е същият, единствената разлика е, че няма лимит. Тя превръща масив в стринг, като отделните елементи са разделени с “разделител”(първия параметър на функцията).
Преминаваме нататък и достигаме до trim(). Тя премахва интервалите, новите редове, табулациите и символа за край(о) от даден стринг. Ето как да я използваме:

$all = trim($pizza);

Друга много по-често използвана функция е nl2br. Когато извеждате нещо към браузера, то се интерпретира във HTML формат. Както ви е известно, за него новите редове се обозначават с “<br \>”(“<br>” за версии, по стари от 4.05). Когато извеждате дълъг текст към браузера може да замените всеки нов ред с ”
“. Това и прави тази функция:

$feedback = nl2br($feedback);

echo $feedback;

За самостоятелно запознаване оставям функцията printf(). Тя е взаимствана 100% от езика С и е полезна при извеждане на текст за печат например. Тъй като в повечето случаи тя не е нужна преминавам към следващите 4 функции:

$string = srttolower($string);

//преобразува целия низ с малки букви

$string = srttoupper($string);

//преобразува целия низ с главни букви

$string = ucfirst($string);

//преобразува само първата буква от низа е главна,а другите са малки

$string = ucwords($string);

//преобразува всяка дума започва с главна буква, а другите са малки

Преминавам към две много прости и същевременно много важни функции: AddSlashes() и StripSlashes(). Когато ви трябва кавичка в стринг, тя не трябва да се интерпретира като кавичка в базата данни например, защото там тя изпълнява друга функция. За да укажете това преди нея трябва да има наклонена черта: \” . По същия начин, ако ви трябва самата наклонена черта, за да не се интерпретира ползвате \\. Добавянето на такива черти става с първата функция, а премахването на тези символи – с втората. Това е особено важно, тъй като ако приемате от потребителя текст, някъде той може да ползва кавички и това да доведе до грешка в базата данни. От друга страна, ако потребителя има лоши намерения, той може да въведе текст, който да причини щети. Малко е рано да ви показвам такъв пример, но след запознаване с MySQL, ще има статия, изцяло посветена на сигурността на кода. Давам пример:

$text = $_POST(‘text’); // грешка

/* възможен резултат: `Момичето си взе ” кошничката “` */

$text = AddSlashes($_POST(‘text’)); // вярно

/* `Момичето си взе \” кошничката \”` */

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

substr(“стринг”, начало на премахването, дължина);

Пример:

substr(“Your customer service is excellent”, 0, 4); // връща “Your”

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

substr(“Your customer service is excellent”, -9); // връща “excellent”

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

strcmp($string1, $string2);

Тази функция различава главни от малки букви, т.е. “Да” е различно от “да”. Ако искате това да не е така ползвайте strcasecmp(), която е със същия синтаксис. Ако се налага да разберете колко символа има в даден низ, ползвате strlen($string); Тя ще ви върне дължината на низа. Ако искате да проверите дали един низ се съдържа в друг ползвайте:

strstr($началенСтринг, $търсенСтринг);

Върнатият резултат ще е началенСтринг от мястото, където се среща за първи път търсенСтринг при успех, а ако няма съвпадения, ще върне лъжа. strpos() има почти същия синтаксис, като strstr, но връща не самия стринг, а позицията на първата поява(число). Има още една доста важна и много често използвана функция:

str_replace($търсенНиз,$заместванНиз, $Стринг);

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

Преминаваме към част 2 на този урок, която е и по сложна – регулярни изрази. Тъй като в уеб програмирането често се налага сложни проверки за акуратност на информацията, са разработени две прототипни функции, с които може да правите сложна проверка и заместване в стринг. Тези функции са ereg(или eregi за неразличаване на големи от малки букви) и ereg_replace(или eregi_replace за неразличаване на големи от малки букви). Първо синтаксиса на ereg :

ereg($условия, $търсенСтринг);

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

Основни символи

  • ^ – указва начало на стринг
  • $ – указва край на стринг
  • . – указва произволен символ
  • * – повторение 0 или повече пъти
  • + – повторение 1 или повече пъти
  • | – логическо или за подстринг
  • \  - включва символа, след този, без да го интерпретира. (пример: за да позволите ” в стринга пишете \”)
  • - – указва разтояние, т.е. a-z са малките буквите от а до z

Класове символи(Групи)

  • [] – обозначава клас(група) от символи
  • {} – обозначава минимален и максимален брой символи в групата
  • () – повтаряща се група

За да внеса малко яснота давам примери:

com$

// ще означава стринг, последните 3 букви от който са com

.at

/* ще означава стринг, който е от 3 букви, поседните са at,

а първата е произволна, cat, nat, $at, #at */

[a-z] // стринг, само с малки букви

[a-zA-Z] // стринг само с букви

[a-zA-Z0-9] // стринг само с букви и числа

(com)|(net)|(org) // стринг с едно от изброените

(very )*large // едно от very large, very very large и т.н.
(very ){1,3} // едно от ‘very ‘,’very very ‘ и ‘very very very ‘

Сега нека видим как ще стане проверка за валидността на електронна поща. Един имейл има следния синтаксис: ime@subdomеin.domеin.raz . Субдомейна може да не присъства, но може и да присъства. Когато започнете да правите проекти ще забележите, че въпреки честата нужда от такива валидатори, много от тях не са добре направени. Често разширението се ограничава така {2,3} , тоест между 2 и 3 символа. eAdvise за пример е с разширение info, което е очевидно с 4 букви и валидатора няма да го възприеме като вярно. Важно е да запомните, че 50% приети невалидни имейли е много по-добре от 1% отхвърлени валидни имейли.
Първо, името на пощенската кутия може да бъде от букви, числа, точка, долна черта и тире, т.е. ще дефинираме първата ни група символи, обозначаващи името

[a-zA-Z0-9_\-\.]+

Т.е. приемаме поне един символ. Следва @ и субдомейна или домейна.

@[a-zA-Z0-9\-]+

Отново трябва да има поне един символ. Сега идва деликатната част. Може да следва или домейн, ако предишното е било субдомейн или разширение. Ще ги обединим в едно, като позволим точка и тире.

[a-zA-Z0-9\-\.]+

Важно е отново да е поне един символ. Тази проверка ще допуска доста невалидни имейли, но няма да отхвърля валидни, което е по-важно. При всички положения обаче, това е по-добре от проста проверка като strstr. Окончателно в РНР можем да проверим дали дадена променлива е имейл с:

eregi(“^[a-zA-Z0-9_\-\.]+@[a-zA-Z0-9\-]+[a-zA-Z0-9\-\.]+$”,$email);

Окончателният вариант изглежда малко странен на пръв поглед – за повечето хора това изглежда пълна безсмислица, но за запознатия читател това е проверка с регулярни изрази. Самите проверки не се правят често, но заместванията са чести, поради лесната си употреба с eregi_replace. Синтаксисът е същият като на str_replace, единствената разлика е че търсеният стринг е регулярна проверка, т.е. командните символи от ereg се вземат в предвид.

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

Стрингови функции (String Functions)

  • addcslashes — Цитат стринг с наклонена черта в стила C
  • addslashes — Цитат стринг с наклонена черта
  • bin2hex — Конвертирай двоични данни в шестнадесетичен представителство
  • chop — разновидност rtrim
  • chr — Върнете специфичен характер
  • chunk_split — Сплит серия на по-малки chunks
  • convert_cyr_string — Конвертирай от една кирилица знакогенератор към друг
  • convert_uudecode — Декодират един uuencoded стринг
  • convert_uuencode — Uuencode string
  • count_chars — Върнете информация за символите, използвани в серия
  • crc32 — Calculates the crc32 polynomial of a string
  • crypt — Една по-малка низ криптиране (hashing)
  • echo — Продукция на един или повече стрингове
  • explode — Сплит серия от поредицата
  • fprintf — Write a formatted string to a stream
  • get_html_translation_table — Връща превод на таблици, използвани от htmlspecialchars и htmlentities
  • hebrev — Convert logical Hebrew text to visual text
  • hebrevc — Convert logical Hebrew text to visual text with newline conversion
  • html_entity_decode — Convert all HTML entities to their applicable characters
  • htmlentities — Convert all applicable characters to HTML entities
  • htmlspecialchars_decode — Convert special HTML entities back to characters
  • htmlspecialchars — Convert special characters to HTML entities
  • implode — Join array elements with a string
  • join — Alias of implode
  • lcfirst — Make a string’s first character lowercase
  • levenshtein — Calculate Levenshtein distance between two strings
  • localeconv — Get numeric formatting information
  • ltrim — Strip whitespace (or other characters) from the beginning of a string
  • md5_file — Calculates the md5 hash of a given file
  • md5 — Calculate the md5 hash of a string
  • metaphone — Calculate the metaphone key of a string
  • money_format — Formats a number as a currency string
  • nl_langinfo — Query language and locale information
  • nl2br — Inserts HTML line breaks before all newlines in a string
  • number_format — Format a number with grouped thousands
  • ord — Return ASCII value of character
  • parse_str — Parses the string into variables
  • print — Output a string
  • printf — Output a formatted string
  • quoted_printable_decode — Convert a quoted-printable string to an 8 bit string
  • quoted_printable_encode — Convert a 8 bit string to a quoted-printable string
  • quotemeta — Quote meta characters
  • rtrim — Strip whitespace (or other characters) from the end of a string
  • setlocale — Set locale information
  • sha1_file — Calculate the sha1 hash of a file
  • sha1 — Calculate the sha1 hash of a string
  • similar_text — Calculate the similarity between two strings
  • soundex — Calculate the soundex key of a string
  • sprintf — Return a formatted string
  • sscanf — Parses input from a string according to a format
  • str_getcsv — Parse a CSV string into an array
  • str_ireplace — Case-insensitive version of str_replace.
  • str_pad — Pad a string to a certain length with another string
  • str_repeat — Repeat a string
  • str_replace — Replace all occurrences of the search string with the replacement string
  • str_rot13 — Perform the rot13 transform on a string
  • str_shuffle — Randomly shuffles a string
  • str_split — Convert a string to an array
  • str_word_count — Return information about words used in a string
  • strcasecmp — Binary safe case-insensitive string comparison
  • strchr — Alias of strstr
  • strcmp — Binary safe string comparison
  • strcoll — Locale based string comparison
  • strcspn — Find length of initial segment not matching mask
  • strip_tags — Strip HTML and PHP tags from a string
  • stripcslashes — Un-quote string quoted with addcslashes
  • stripos — Find position of first occurrence of a case-insensitive string
  • stripslashes — Un-quotes a quoted string
  • stristr — Case-insensitive strstr
  • strlen — Get string length
  • strnatcasecmp — Case insensitive string comparisons using a “natural order” algorithm
  • strnatcmp — String comparisons using a “natural order” algorithm
  • strncasecmp — Binary safe case-insensitive string comparison of the first n characters
  • strncmp — Binary safe string comparison of the first n characters
  • strpbrk — Search a string for any of a set of characters
  • strpos — Find position of first occurrence of a string
  • strrchr — Find the last occurrence of a character in a string
  • strrev — Reverse a string
  • strripos — Find position of last occurrence of a case-insensitive string in a string
  • strrpos — Find position of last occurrence of a char in a string
  • strspn — Find length of initial segment matching mask
  • strstr — Find first occurrence of a string
  • strtok — Tokenize string
  • strtolower — Make a string lowercase
  • strtoupper — Make a string uppercase
  • strtr — Translate certain characters
  • substr_compare — Binary safe comparison of 2 strings from an offset, up to length characters
  • substr_count — Count the number of substring occurrences
  • substr_replace — Replace text within a portion of a string
  • substr — Return part of a string
  • trim — Strip whitespace (or other characters) from the beginning and end of a string
  • ucfirst — Make a string’s first character uppercase
  • ucwords — Uppercase the first character of each word in a string
  • vfprintf — Write a formatted string to a stream
  • vprintf — Output a formatted string
  • vsprintf — Return a formatted string
  • wordwrap — Wraps a string to a given number of characters

Сходни статии:

  1. Стандартни функции в програмирането Не е необходимо да се пишат програмите с всичките им подроб-ности. С++ предлага множество стандартни функции. Тяхното из-ползване повишава продуктивността и пести програмистко време. Не е необходимо да се пише...
  2. Задача: автоматизиране на работата на диспечер I. Условие Задача 24: Да се автоматизира дейността на диспечер на градския транспорт в град София. II. Анализ Диспечерът в автотранспорта има широко поле за реализация и практически може да...
  3. Използване на файл в Паскал Files are referred to in Pascal programs by the use of filenames. You have already used two default filenames, input and output. These are associated with the keyboard and console...
  4. Програмиране в C и C++ Кодирането или съставянето на програмата е реализация на алгоритмите чрез език за програмиране. Езиците за програмиране от високо ниво, какъвто е и програмният език C, се характеризират със задължителни синтактични...

Студио за уеб дизайн услуги, изработка на сайтове, SEO оптимизация и Интернет реклама Seven Web Design представя своите професионални уеб дизайн умения на високо ниво. Seven Web Design е продукт на Уеб Дизайн България Груп ООД ®
Comments are closed.