Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
16 Закрытый исходный код.doc
Скачиваний:
3
Добавлен:
22.12.2018
Размер:
439.81 Кб
Скачать

58 Оператор Switch

Конструкция переключателя имеет несколько (две или более) ветвей. Переключатель выполняет одну заданную ветвь в зависимости от значения вычисляемого ключевого выражения. Принципиальным отличием этой инструкции от условного оператора является то, что выражение, определяющее выбор исполняемой ветви, возвращает не логическое, а целое значение, либо значение, тип которого может быть приведён к целому. В некоторых языках допускается использовать в переключателе выражения некоторых типов, не приводимых к целому (например, текстовые строки).

Например, в языке Си синтаксис команды следующий:

switch (i)

{

case 0:

case 1: // последовательность операторов

break;

case 2: // последовательность операторов

break;

default:

}

Здесь i — выражение-селектор, которое обязано иметь приводимый к целому тип, каждая ветвь исполнения начинаются с ключевого слова case, за ним следует значение выражения, при котором должна выполняться данная ветвь. Интересной особенностью языка Си является то, что в нём переключатель трактуется именно как команда перехода по вычисляемой метке, а роль меток играют заголовки ветвей (case значение :). Чтобы после завершения кода ветви произошёл выход из оператора переключателя, используется специальная команда break. Если такой команды в ветви нет, после исполнения кода выбранной ветви начнётся исполнение кода следующей за ней. Эта особенность может использоваться для оптимизации, хотя может служить причиной труднообнаруживаемых ошибок (если программист случайно пропустит break, компилятор не выдаст ошибки, но программа будет выполняться неверно). Ветвь default исполняется тогда, когда среди прочих ветвей не нашлось ни одной подходящей.

59 Использование функций. Строковые переменные.

60 Поиск и замена строк в php.

РНР предлагает широкий спектр функций для поиска и замены текста внутри строк с использованием как традиционного подхода “поиска и замены”, так и специальной системы, известной под названием регулярных выражений, которая будет описана далее в этой книге.

Простейшая форма поиска состоит в нахождении подстроки в строке. Эта задача обычно выполняется вызовом функции strpos (Shaystack, Sneedle [, SstartJ), которая возвращает false, если Sneedle не может быть найдено в Shaystack; в противном случае функция возвращает позицию первого символа Sneedle внутри Shaystack. Если указан целочисленный параметр Sstart, операция поиска выполняется, начиная с символа Shaystack, положение которого соответствует Sstart.

Например, следующий сценарий возвращает “Строка найдена в позиции 24″:__Основы разработки на РНР ^

<? Php

Shaystack = ‘Трое в лодке, не считая собаки’;

Spos = strpos (Shaystack, ‘собаки’);

if (Spos === false)

echo “Строка не найдена\п”;

else

echo “Строка найдена в позиции Spos\n”;

?>

Чтобы определить, был ли вызов strpos () успешным и вхождение подстроки ‘собаки’ присутствует внутри Shaystack, значение Spos сравнивается с false с помощью операции проверки равенства с контролем типов ===. Причина этого состоит в том, что булевское значение false равно целочисленному нулю. Однако strpos () возвратит ноль, если искомый фрагмент Sneedle будет найден, начиная с первого символа.

Shaystack = ‘Трое в лодке’;

Spos ■ strpos (Shaystack, ‘Трое’);

if (!Spos)

echo “Строка не найдена\п”; else

echo “Строка найдена в позиции SposSn”;

Несмотря на то, что strpos () выполняет поиск слева направо, можно начать поиск с конца строки и двигаться к началу с помощью функции strrpos (). В отличие от strpos (), однако, strrpos () может искать только один символ. Если вы укажете строку с более чем одним символом в параметре Sneedle, будет принят во внимание только первый символ.

strpos () является функцией, чувствительной к регистру, а поэтому, например, не найдет слово ‘ трое’ в предыдущем примере.

В отличие от strpos (),strstr О возвращает часть Shaystack, которая начинается с Sneedle

Замена строк

РНР предлагает две основных функции для выполнения простых операций поиска и замены. Первая из них — substr_replace () — может использоваться в случае, когда вам известно положение подстроки, которая должна быть заменена, и ее длина. Например:

Shaystack = ‘Трое в лодке’;

$newstr = substr_replace (Shaystack, ‘яхте1, 7, 5); echo “$newstr\n”;

Этот сценарии вернет ‘ Трое в яхте’. Функция substr_replace () работает, вырезая подстроку из Shaystack, начиная с позиции, указанной в третьем параметре и не обязательной длиной, заданной в четвертом параметре, а затем заменяет ее строкой, переданной во втором параметре.

Естественно, вы не всегда знаете точно, где находится подстрока, которую необ ходимо заменить, — на самом деле может существовать более одного вхождения такой подстроки. Для таких случаев больше подходит функция str_replace (), которая комбинирует поисковые возможности функции strstr () со способностью выполнять замену substr_replace().

Синтаксис str_replace () выглядит следующим образом:

str_replace (Ssearch, Sreplace, Ssubject)

Функция находит все вхождения строки Ssearch внутри Ssubject и заменяет их строкой Sreplace.

Ниже представлен пример, который возвращает ‘ Трое в яхте1:

Shaystack = ‘Трое в лодке’;

Snewstr = str_replace (’лодке’, ‘яхте’, Shaystack); echo “$newstr\n”;

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