Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КЛ_СЯП_защ.doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
2.68 Mб
Скачать

Функция 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";

?>

Пример. Использование функции substr_replace()

В результате работы этого скрипта получим:

Исходная строка: Меня зовут Вася.

------------------------------------------

А меня – Петя

А меня – Петя

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

Меня зовут Иван.

Меня зовут Иван.

22.4. Разделение и соединение строки

Очень полезные функции – функция разделения строки на части и обратная ей функция объединения строк в одну строку. Почему очень полезные? Например, если вы динамически генерируете форму по желанию пользователя, можно предложить ему вводить элементы для создания списка выбора, разделяя их каким-нибудь символом. И для того чтобы обработать полученный список значений, как раз и пригодится умение разбивать строку на кусочки. Для реализации такого разбиения в PHP можно использовать несколько функций:

explode(разделитель,исходная строка

[,максимальное число элементов])

split (шаблон, исходная строка

[, максимальное число элементов])

preg_split (шаблон, исходная строка

[, максимальное число элементов

[,флаги]])

Последние две функции работают с регулярными выражениями, поэтому в данной лекции мы их рассматривать не будем. Рассмотрим более простую функцию – explode() .

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

Пример. мы хотим создать элемент формы – выпадающий список и значения для этого списка должен ввести пользователь, не знакомый с языком html. Создадим такую форму:

<form action=exp.php>

Введите варианты для выбора автора статьи через двоеточие (":"):<br>

<input type=text name=author size=40>

<br>

<input type=submit value="Создать элемент">

</form>

Пример. Использование функции explode()

Скрипт, который будет ее обрабатывать (exp.php), может быть таким:

<?php

$str = $_GET["author"];

$names = explode(":",$str);

// разбиваем строку введенную,

// пользователем с помощью ":"

$s = "<select name=author>";

// создаем выпадающий список

foreach ($names as $k => $name) {

$s .= "<option value=$k>$name";

// добавляем элементы к списку

}

$s .= "</select>";

echo $s;

?>

Кроме разделения строки на части иногда, наоборот, возникает необходимость объединения нескольких строк в одно целое. Функция, предлагаемая для этого языком PHP, называетсяimplode() :

implode (string $glue , array $pieces)

Эта функция объединяет элементы массива с помощью переданного ей объединяющего элемента (например, запятой). В отличие от функции explode() , порядок аргументов в функции implode() не имеет значения.

Пример. Допустим, мы храним имя, фамилию и отчество человека по отдельности, а выводить их на странице нужно вместе. Чтобы соединить их в одну строку, можно использовать функцию implode() :

<?php

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

$str = implode(" ", $data);

echo $str;

?>

Пример. Использование функции implode()

В результате работы этого скрипта получим строку:

Иванов Иван Иванович

У функции implode() существует псевдоним – функция join(), т.е. эти две функции отличаются лишь именами.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]