ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 24.05.2024

Просмотров: 62

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Приклад 8.6. Використовування функції strip_tags()

В результаті одержимо:

Bold text Italic text

Bold text Italic text

Bold text Italic text

Приведемо інший приклад використовування функції substr() . Припустимо, у нас є якесь повідомлення з вітанням і підписом автора. Ми хочемо видалити спочатку вітання, а потім і підпис, залишивши тільки змістовну частину повідомлення.

<?php

$text = "привіт! Сьогодні ми вивчаємо роботу з рядками. Автор.";

$no_hello = substr($text, 8);

// прибираємо вітання

$content = substr($text, 8, 38);

// те ж саме, що substr($text, 8, -6).

// Прибираємо підпис.

echo $text, "<br>" $no_hello "<br>" $content;

?>

В результаті одержимо:

Привіт! Сьогодні ми вивчаємо роботу з рядками. Автор.

Сьогодні ми вивчаємо роботу з рядками. Автор.

Сьогодні ми вивчаємо роботу з рядками.

Якщо нам потрібно одержати один конкретний символ з рядка, знаючи його порядковий номер, то не слід задіювати функції типу substr . Можна скористатися більш простим синтаксисом – записуючи номер символу у фігурних дужках після імені рядкової змінної. В контексті попереднього прикладу букву " р ", розташовану другою по рахунку, можна одержати так:

echo $text{1}; // виведе символ "р"

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

Раз вже ми почали говорити про символи в рядку і їх нумерацію, то мимоволі виникає питання, скільки всього символів в рядку і як це обчислити. Число символів в рядку – це довжина рядка. Обчислити довжину рядка можна за допомогою функції strlen (рядок). Наприклад, довжина рядка "Розробка інформаційної моделі" обчислюється за допомогою команди: strlen ("розробка інформаційної моделі"); і рівна 32 символам.

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

Заміна входження підрядка

Функція str_replace

Для заміни входження підрядка можна використовувати функцію str_replace() . Це проста і зручна функція, що дозволяє вирішувати безліч задач, що не вимагають особливої тонкості при виборі замінюваного підрядка. Для того, щоб проводити заміни з складнішими умовами, використовують механізм регулярних виразів і відповідні функції ereg_replace() і preg_replace(). Синтаксис функції str_replace() такий:


str_replace(шукане значення, значення для заміни, об'єкт)

Функція str_replace() шукає в даному об'єкті значення і замінює його значенням, призначеним для заміни. Чому ми говоримо тут не про рядки для пошуку і заміни і початковий рядок, а про значення і об'єкт, в якому відбувається заміна? Річ у тому, що починаючи з PHP 4.0.5 будь-який аргумент цієї функції може бути масивом.

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

<?php

$greeting = array("Привіт", "Привіт всім!", "Привіт, люба!"); // об'єкт

$new_greet = str_replace("Привіт", "Добрий ранок", $greeting);

// робимо заміну

print_r($new_greet);

/* одержимо: Array ([0]=>Добрий ранок

[1]=>Добрий ранок всім!

[2]=>Добрий ранок, люба!) */

?>

Приклад 8.7. Використовування функції str_replace()

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

<?php

$greeting = array("Привіт", "Привіт всім!", "Привіт, люба!", "Здрастуйте", "Здрастуйте, товариші", "Hi");

// об'єкт

$search = array ("Привіт", "Здрастуйте", "Hi");

// значення, які замінюватимемо

$replace = array ("Добрий ранок", "День добрий");

// значення, якими замінюватимемо

$new_greet = str_replace($search, $replace, $greeting);

// робимо заміну

print_r($new_greet);

//виводимо одержаний масив

?>

Приклад 8.8. Використовування функції str_replace(). Варіант 2

В результаті одержимо такий масив:

Array (

[0] => Добрий ранок

[1] => Добрий ранок всім!

[2] => Добрий ранок, люба!

[3] => День добрий

[4] => День добрий, товариші

[5] =>

)

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

Функція str_replace() чутлива до регістра, але існує її не чутливий до регістру аналог – функція str_ireplace() . Проте ця функція підтримується не у всіх версіях PHP.


Функція substr_replace

Ця функція поєднує в собі властивості двох вже розглянутих нами функцій – функції str_replace() і substr() . Її синтаксис такий:

substr_replace (початковий рядок, рядок для заміни, позиція початкового символу [, довжина])

Ця функція замінює частину рядка рядком, призначеним для заміни. Замінюється та частина рядка (тобто підрядок), який починається з позиції, вказаної параметром позиція початкового символу. За допомогою додаткового аргументу довжина можна обмежити число замінюваних символів. Тобто, фактично, ми не указуємо конкретно рядок, який потрібно замінити, ми тільки описуємо, де він знаходиться і, можливо, яку довжину має. В цьому відмінність функції substr_replace() від str_replace() .

Як і у випадку з функцією substr() аргументи позиція початкового символу і довжина можуть бути негативними. Якщо позиція початкового символу негативна, то заміна проводиться, починаючи з цією позицією щодо кінця рядка. Негативна довжина задає, скільки символів від кінця рядка не повинне бути замінено. Якщо довжина не указується, то заміна відбувається до кінця рядка.

<?php

$text = "мене звуть Вася.";

echo "Початковий рядок: $text<hr>\n";

/* Наступні два рядки замінять весь початковий рядок рядком 'А мене – Петя' */

echo substr_replace($text, 'А мене – Петя', 0) . "<br>\n";

echo substr_replace($text, 'А мене – Петя', 0, strlen($text)) . "<br>\n";

// Наступний рядок додасть слово 'Привіт! 'в початок початкового рядка

echo substr_replace($text, 'Привіт! ', 0, 0) . "<br>\n";

// Наступні два рядки замінять ім'я Вася на ім'я Іван в початковому рядку

echo substr_replace($text, 'Иван', 11, -1) . "<br>\n";

echo substr_replace($text, 'Иван', -5, -1) . "<br>\n";

?>

Приклад 8.10. Використовування функції substr_replace()

В результаті роботи цього скрипта одержимо:

Початковий рядок: Мене звуть Вася.

А мене – Петя

А мене – Петя

Привіт! Мене звуть Вася.

Мене звуть Іван.

Мене звуть Іван.

Розділення і з'єднання рядка

Дуже корисні функції – функція розділення рядка на частини і зворотна їй функція об'єднання рядків в один рядок. Чому дуже корисні? Наприклад, якщо ви динамічно генеруєте форму за бажанням користувача, можна запропонувати йому вводити елементи для створення списку вибору, розділяючи їх яким-небудь символом. І для того, щоб обробити одержаний список значень, якраз і стане в нагоді уміння розбивати рядок на шматочки.


explode (роздільник, вихідний рядок [,максимальне число елементів])

Функція explode() ділить початковий рядок на підрядки, кожен з яких відокремлений від сусіднього за допомогою вказаного роздільника, і повертає масив одержаних рядків. Якщо заданий додатковий параметр максимальне число елементів, то число елементів в масиві буде не більше цього параметра, в останній елемент записується весь залишок рядка. Якщо як роздільник вказаний порожній рядок """", то функція explode() поверне false. Якщо символу роздільника в початковому рядку немає, то повертається масив з початковим рядком без змін.

Окрім розділення рядка на частини іноді, навпаки, виникає необхідність об'єднання декількох рядків в одне ціле. Функція, пропонована для цього язиком PHP, називається implode() :

implode (string $glue, array $pieces)

Ця функція об'єднує елементи масиву за допомогою переданого їй об'єднуючого елемента (наприклад, коми). На відміну від функції explode(), пірядок аргументів у функції implode() не має значення.

Приклад 8.12. Припустимо, ми зберігаємо ім'я, прізвище і по батькові людини по окремості, а виводити їх на сторінці потрібно разом. Щоб з'єднати їх в один рядок, можна використовувати функцію implode() :

<?php

$data = array("Иванов","Иван","Иванович");

$str = implode(" " $data);

echo $str;

?>

Приклад 8.12. Використовування функції implode()

В результаті роботи цього скрипта одержимо рядок:

Іванов Іван Іванович

У функції implode() існує псевдонім – функція join(), тобто ці дві функції відрізняються лише іменами.


Висновок

Отже, ми завершили знайомство з функціями роботи з рядками язика PHP. Звичайно ж, ми торкнулися далеко не всіх існуючих функцій, а лише малу частину. Ми вивчили функції, що дозволяють знайти набір символів в рядку, функції, замінюючі всі входження одного рядка на іншу, функції розділення рядка на частини і з'єднання декількох рядків в одну.