Материал: Функції роботи з рядками в PHP

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Int substr_count (string рядок, string підрядок)

У наступному прикладі функція substr_count ( ) підраховує кількість входжень підрядка ain:

$tng_twist = "The rain falls mainly on the plains of Spain";

$count = substr_count($tng_twist, "ain");

// $count = 4

substr_replace ( )

Функція substr_replace ( ) замінює частину рядка, яка починається з заданої позиції. Якщо заданий необов'язковий параметр довжина, замінюється фрагмент заданої довжини; в іншому випадку проводиться заміна по всій довжині замінної рядка. Синтаксис функції substr_replace ( ) :

string substr_replace (string рядок, string заміни, int начало [, int довжина])

Параметри початок і довжина задаються за певними правилами :

  • якщо параметр початок позитивний, заміна починається з заданої позиції;

  • якщо параметр початок від'ємний, заміна починається з позиції (довжина рядка - початок);

  • якщо параметр довжина позитивний, замінюється фрагмент заданої довжини;

  • якщо параметр довжина від'ємний, заміна завершується у позиції (довжина рядка - довжина).

Проста заміна тексту функцією substr_replace ( ) продемонстрована в наступному прикладі:

$favs = " 's favorite links";

$name = "Alessia";

// Параметри "0, 0" означають, що замінюваний фрагмент починається

// і завершується в першій позиції рядка.

$favs - substr_replace($favs, $name, 0, 0);

print $favs:

Перетворення рядків і файлів до формату HTML і навпаки

Перетворити рядок або цілий файл до формату, невластивому для перегляду у веб-браузері (або навпаки), простіше, ніж може здатися на перший погляд. У РНР для цього існують спеціальні функції.

Перетворення тексту в HTML

Швидке перетворення простого тексту до формату веб-браузера - вельми поширене завдання. В його вирішенні допоможуть функції, описані в цьому розділі.

nl2br ( )

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

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

string nl2br (string строка)

Символи нового рядка можуть бути як видимими (тобто явно включеними в рядок), так і невидимими (наприклад, введеними в редакторі ). У наступному прикладі текстовий рядок перетвориться у формат HTML за допомогою заміни символів \n розривами рядків:

// Текстовий рядок, що відображається в редакторі.

$text_recipe = "

Party Sauce recipe:

1 can stewed tomatoes

3 tablespoons fresh lemon juice

Stir together, server cold.";

// Перетворені символи нового рядка

$htinl_recipe = nl2br($text_recipe)

При подальшому виведення $html_recipe браузеру буде переданий наступний текст у форматі HTML:

Party Sauce recipe:<br>

1 can stewed tomatoes<br>

3 tablespoons fresh lemon juice<br>

Stir together, server cold.<br>

Htmlspecialchars( )

Функція htmlspecialchars ( ) замінює деякі символи, що мають особливий сенс у контексті HTML, еквівалентними конструкціями HTML. Синтаксис функції htmlspecialchars ( ) :

string htmlspecialchars (string строка)

Зокрема, ця функція дозволяє запобігти введення користувачами розмітки HTML в інтерактивних веб-додатках (наприклад, в електронних форумах). Помилки, допущені в розмітці HTML, можуть призвести до того, що вся сторінка буде формуватися неправильно. Втім, у цієї задачі існує і більш ефективне рішення - повністю видалити теги з рядка функцією strip_tags ( ).

Наступний приклад демонструє видалення потенційно небезпечних символів функцією htmlspeclalchars ( ) :

$user_input = "I just can't get <enough> of PHP & those fabulous cooking recipes!";

$conv_input = htmlspecialchars($user_input);

// $conv_input = "I just can't <<enough>> of PHP & those fabulous cooking recipes!"

Якщо функція htmlspeclalchars () використовується в поєднанні з nl2br ( ), то останню слід викликати після htmlspeclalchars ( ). В іншому випадку конструкції інструменти, згенеровані при виклику nl2br ( ), перетворяться в видимі символи.

Get_html_translation_table ( )

Функція get_html_translation_table ( ) забезпечує зручні засоби перетворення тексту в еквівалент HTML Синтаксис функції get_html_translation_table ( ) :

string get_html_translation_table (int таблица)

Функція get_html_translation_table () повертає одну з двох таблиць перетворення (визначається параметром таблиця), що використовуються в роботі стандартних функцій htmlspeclalchars ( ) і 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 ( ) у попередньому прикладі ми привласнили його змінної $ переведені рядок.

У наступному прикладі вихідний текст відновлюється функцією 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 ( ) :

string strtr (string рядок, string джерело, string приймач)

Якщо рядки джерело і приймач мають різну довжину, довший рядок буде скорочуватися до розмірів коротшого рядка.

Існує альтернативний синтаксис виклику strtr ( ) з двома параметрами; в цьому випадку другий параметр містить асоціативний масив, ключі якого відповідають замінним підрядкам, а значення - замінюють підрядки. У наступному прикладі теги HTML замінюються XML - подібними конструкціями :

$source = array(\"<title>\" => \"<h1>\". \"</title> => \"</h1>\");

$string = \"<h1>Today In PHP-Powered News\"</h1>\";

print strtr($string, $source);

// Виводиться рядок \ " <title> Today in PHP-Powered News < /title> \ "

Перетворення HTML в простий текст

Іноді виникає необхідність перетворити файл у форматі HTML в простий текст. Функції, описані нижче, допоможуть вам у вирішенні цього завдання.

strip_tags ( )

Функція strip_tags ( ) видаляє з рядка всі теги HTML і РНР, залишаючи в ній тільки текст. Синтаксис функції strip_tags ( ) :

string strip_tags (string рядок [, string дозволені_тeги])

Необов'язковий параметр дозволені_тeги дозволяє вказати теги, які повинні пропускатися в процесі видалення.

Нижче наведено приклад видалення з рядка всіх тегів HTML функцією strip_tags( ):

$user_input = "I just love РНР and gourment recipes!";

$stripped_input = strip_tags($user_input);

// $stripped_input = "I just love PHP and gourmet recipes!";

У наступному прикладі видаляються не всі, а лише деякі теги :

$input = \"I <b>love</b> to <a href = \\"http://www.eating.com\\">eat!</a>!\";

$strip_input = strip_tags ($user_input, \"<a>\");

// $strip_input = \"I love to <a href = \\"http://www.eating.com\\">eat!</a>!\";

Видалення тегів з тексту також проводиться функцією fgetss ( ).

Перетворення рядка до верхнього і нижнього регістру

У РНР існує чотири функції, призначених для зміни регістру рядки:

  • strtolower ();

  • strtoupper ();

  • ucfirst ();

  • ucwords ( ).

strtolower ( )

Функція strtolower ( ) перетворює всі символи верхнього рядка до нижнього регістру. Синтаксис функції strtolower ( ) :

string strtolower(string строка)

Символи у нижньому регістрі символи функцією не змінюються. Перетворення рядка до нижнього регістру функцією strtolower ( ) продемонстровано в наступному прикладі:

$sentence = "COOKING and PROGRAMMING PHP are my TWO favorite!";

$sentence = strtolower($sentence);

// після виклику функції $sentence містить рядок

// "cooking and programming php are my two favorite!"

strtoupper ( )

Рядки можна перетворювати не тільки до нижнього, а й до верхнього регістру. Перетворення виконується функцією strtoupper ( ), що має наступний синтаксис:

string strtoupper (string рядок)

Неалфавітні символи функцією не змінюються. Перетворення рядка до верхнього регістру функцією strtoupper ( ) продемонстровано в наступному прикладі:

$sentence = "cooking and programming PHP are my two favorite!";

$sentence = strtoupper($sentence);

// після виклику функції $sentence містить рядок

// "COOKING AND PROGRAMMING PHP ARE MY TWO FAVORITE!"

ucfirst ( )

Функція ucfirst ( ) перетворює до верхнього регістру перший символ рядка - за умови, що він є алфавітним символом. Синтаксис функції ucfirst ( ) :

string ucfirst (string строка)

Неалфавітні символи функцією не змінюються. Перетворення першого символу рядка функцією ucfirst ( ) продемонстровано в наступному прикладі:

&sentence = "cooking and programming PHP are my two favorite!";

$sentence = ucfirst($sentence);

// після виклику функції $sentence містить рядок

// "Cooking and programming PHP are mу two favorite!"

ucwords ( )

Функція ucwords ( ) перетворює до верхнього регістру першу букву кожного слова в рядку. Синтаксис функції ucwords ( ) :

string ucwords (string строка")

Неалфавітні символи функцією не змінюються. "Слово" визначається як послідовність символів, відокремлена від інших елементів рядка пробілами. У наступному прикладі продемонстровано перетворення перших символів слів функцією ucwords ( ) :

$sentence = "cooking and programming PHP are my two favorite!";

$sentence = ucwords($sentence);

// После вызова функции $sentence содержит строку

// "Cooking And Programming PHP Are My Two Favorite!"

strrchr ( )

strrchr ( "рядок", "символ" ) - Знаходить останнє входження підрядка

Якщо підрядок не знайдено, повертає БРЕХНЯ.

На відміну від strchr ( ), якщо шуканий рядок складається більш ніж з одного символу, використовується тільки перший символ.

Якщо другий параметр не є рядком, він приводиться до цілого і трактується як код символу.

// отримати останню директорію із $PATH

$dir = substr(strrchr($PATH, ":"), 1);

// отримати все, після останнього переводу рядка

$text = "Line 1\nLine 2\nLine 3";

$last = substr(strrchr($text, 10), 1 );

wordwrap( )

Виконує перенесення рядка на дану кількість символів з використанням символу розриву рядка

// Використання wordwrap().

function cite($ourText, $maxlen=60, $prefix=\"> \") {

$st = wordwrap($ourText, $maxlen-strlen($prefix), \"\n\");

$st = $prefix.str_replace(\"\n\", \"\n$prefix\", $st);

return $st;

}

echo \"<pre>\";

echo cite(\"The first Matrix I designed was quite naturally

perfect, it was a work of art - flawless, sublime. A triumph

equalled only by its monumental failure. The inevitability

of its doom is apparent to me now as a consequence of the

Imperfection inherent in every human being. Thus, I

redesigned it based on your history to more accurately reflect

the varying grotesqueries of your nature. However, I was again

frustrated by failure.\", 20);

echo \"</pre>\";

> The first Matrix I

> designed was quite

> naturally

> perfect, it was a

> work of art -

> flawless, sublime.

> A triumph

> equalled only by

> its monumental

> failure. The

> inevitability

> of its doom is

> apparent to me now

> as a consequence

> of the

> imperfection

> inherent in every

> human being. Thus,

> I

> redesigned it

> based on your

> history to more

> accurately reflect

>

> the varying

> grotesqueries of

> your nature.

> However, I was

> again

> frustrated by

> failure.

Завдання

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

«3» - застосувати не менше 10 функцій

«4» - застосувати не менше 15 функцій

«5» - застосувати не менше 20 функцій

Контрольні питання

  1. Поясніть механізм роботи функції chop( ). Наведіть формальний синтаксис.

  2. Поясніть механізм роботи функції str_pad( ). Наведіть формальний синтаксис.

  3. Поясніть механізм роботи функції trim( ). Наведіть формальний синтаксис.

  4. Поясніть механізм роботи функції ltrim( ).. Наведіть формальний синтаксис.

  5. Поясніть механізм роботи функції strlen( ). Наведіть формальний синтаксис.

  6. Поясніть механізм роботи функції strcmp ( ). Наведіть формальний синтаксис.

  7. Поясніть механізм роботи функції strcasecmp ( ). Наведіть формальний синтаксис.

  8. Поясніть механізм роботи функції strspn ( ). Наведіть формальний синтаксис.

  9. Поясніть механізм роботи функції strcspn ( ). Наведіть формальний синтаксис.

  10. Поясніть механізм роботи функції strtok ( ). Наведіть формальний синтаксис.

  11. Поясніть механізм роботи функції parse_str ( ). Наведіть формальний синтаксис.

  12. Поясніть механізм роботи функції explode ( ). Наведіть формальний синтаксис.

  13. Поясніть механізм роботи функції іmplode ( ). Наведіть формальний синтаксис.

  14. Поясніть механізм роботи функції strpos ( ). Наведіть формальний синтаксис.

  15. Поясніть механізм роботи функції strrpos ( ). Наведіть формальний синтаксис.

  16. Поясніть механізм роботи функції str_replace ( ). Наведіть формальний синтаксис.

  17. Поясніть механізм роботи функції strstr ( ). Наведіть формальний синтаксис.

  18. Поясніть механізм роботи функції substr (). Наведіть формальний синтаксис.

  19. Поясніть механізм роботи функції substr_count ( ). Наведіть формальний синтаксис.

  20. Поясніть механізм роботи функції substr_replace ( ). Наведіть формальний синтаксис.

  21. Поясніть механізм роботи функції nl2br ( ). Наведіть формальний синтаксис.

  22. Поясніть механізм роботи функції htmlspecialchars ( ). Наведіть формальний синтаксис.

  23. Поясніть механізм роботи функції get_html_translation_table ( ). Наведіть формальний синтаксис.

  24. Поясніть механізм роботи функції strtr ( ). Наведіть формальний синтаксис.

  25. Поясніть механізм роботи функції strip_tags ( ). Наведіть формальний синтаксис.

  26. Поясніть механізм роботи функції strtolower ( ). Наведіть формальний синтаксис.

  27. Поясніть механізм роботи функції strtoupper ( ). Наведіть формальний синтаксис.

  28. Поясніть механізм роботи функції ucfirst ( ). Наведіть формальний синтаксис.

  29. Поясніть механізм роботи функції ucwords ( ). Наведіть формальний синтаксис.

  30. Поясніть механізм роботи функції wordwrap( ). Наведіть формальний синтаксис.