Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Лабораторная работа №1 «Основы PHP»Стр 1 из 14Следующая ⇒
Лабораторная работа №1 «Основы PHP» Программы PHP могут выполняться двумя способами: как сценарное приложение Web-сервером и как консольные программы. Поскольку, нашей задачей является программирование web-приложений, мы преимущественно будем рассматривать первый способ. PHP, как правило, используется сугубо для программирования приложений, связанных с Интернетом. Однако, PHP можно еще использовать в качестве интерпретатора командной строки. Последнее возможно при помощи CORBA и COM интерфейсов, а также при помощи расширения PHP-GTK. При таком использовании PHP возможно решение следующих задач: · создание приложений интерактивной командной строки; · создание кросс-платформенных приложений при помощи библиотеки PHP-GTK; · автоматизация некоторых задач под Windows и Linux Рассмотрим процесс выполнения php-сценария при обращении браузера к серверу. Итак, вначале браузер запрашивает страницу с расширением.php, после чего web-сервер пропускает программу через машину PHP и выдаёт результат в виде html-кода. Причем, если взять стандартную страницу HTML, изменить расширение на.php и пропустить её через машину PHP, последняя просто перешлёт её пользователю без изменений. Чтобы включить в этот файл команды PHP, необходимо заключить команды PHP в специальные теги, нас интересует 2 вида: Инструкция обработки XML: <?php... ?>Инструкция обработки сценариев HTML: <script language = "php">...</script>Вообще говоря, внутри какого-либо блока кода можно выйти из PHP, при условии, что дальше мы войдем в него снова и закончим код. Т.е., возможна следующая конструкция: <? if (5<3) { echo ("<p>Hello, world!<p>"); ?> <p>Hello!</p> <? echo ("<p>Hello, world!<p>"); }?>Команда echo в PHP применяется для вывода фактически всего, что встречается на web-страницах (текст, разметку HTML, числа). Комментарии PHP предоставляет несколько методов для вставки комментариев. Проще всего пользоваться двойным слэшем в стиле языка С++ (//), после чего PHP машина игнорирует все, что расположено до конца строки. Также можно пользоваться многострочными комментариями в стиле С (/*…*/). Для однострочных комментариев можно еще пользоваться символом решетки (#). <php echo ("<p>Hello</p>"); // комментарий echo ("<p>Hello</p>"); # комментарий /* и это тоже комментарии */ ?>Следует помнить о том, что стили комментариев PHP действуют только внутри ограничителей PHP. Если PHP встретит эти символы комментариев вне ограничителей, то они, как и любой текст, будут помещены на html-страницу. Например:
Заметим, что комментарии можно вставлять не только после конца оператора, а, например, и вот так: <? $a = "Hello, world"; echo strstr($a,"H"); // эту функцию мы рассмотрим позднее?>Переменные в РНР начинаются со знака доллара ($), за которым может следовать любое количество буквенно-цифровых символов и символов подчеркивания, но первый символ не может быть цифрой. Таким образом, допустимы следующие имена переменных: $n, $n1, $user_func_5 и т.д. В отличие от ключевых слов, имена переменных в PHP чувствительны к регистру, т.е. переменные $user, $User и $USER являются различными. <?php $user = "Владимир"; $User = "Дмитрий"; $USER = "Юрий"; echo $user; // Владимир echo $User; // Дмитрий echo $USER; // Юрий?>При объявлении переменных в РНР не требуется явно указывать тип переменной, при этом одна и та же переменная может иметь на протяжении программы разные типы. Как видно из предыдущего листинга, для присвоения значения переменной необходимо воспользоваться оператором присвоения =, который позволяет инициализировать переменную. При объявлении числовых значений в качестве разделителя целого значения и дробной части выступает точка. <?php $number = 1; $var = 3.14;?>Внешние переменные После того, как запрос клиента проанализирован веб-сервером и передан РНР машине, последняя устанавливает ряд переменных, которые содержат данные, относящиеся к запросу и доступны все время его выполнения. Сначала РНР извлекает переменные окружения операционной системы и создает переменные с теми же именами и значениями в окружении сценария РНР для того чтобы сценариям, расположенным на сервере были доступны особенности системы клиента. Эти переменные помещаются в ассоциативный массив $_SERVER (содержимое этого массива можно всегда посмотреть, воспользовавшись функцией print_r($_SERVER) или phpinfo()).
Затем РНР создает группу GET-переменных, которые создаются при анализе строки запроса. Строка запроса хранится в переменной $_SERVER['QUERY_STRING'] и представляет собой информацию, следующую за символом "?" в запрошенном URL. РНР разбивает строку запроса по символам & на отдельные элементы, а затем ищет в каждом из этих элементов знак "=". Если знак "=" найден, то создается переменная с именем из символов, стоящих слева от знака равенства. Рассмотрим следующую форму: <form action = "http://localhost/PHP/test.php" method="get">HDD: <input type="text" name="HDD"/><br>CDROM: <input type="text" name="CDROM"/><br><input type="submit"/></form>Если Вы в этой форме в строке HDD наберете, к примеру, "Maxtor", а в строке CDROM "Nec", то она сгенерирует следующую форму запроса: http://localhost/PHP/test.php?HDD=Maxtor&CDROM=Nec В нашем случае РНР создаст следующие переменные: $_GET['HDD'] = "Maxtor" и $_GET['CDROM'] = "Nec". Вы можете работать с этими переменными из Вашего скрипта (у нас – test.php) как с обычными переменными. В нашем случае они просто выводятся на экран: <? echo("<p>HDD is $_GET[HDD]</p>"); echo("<p>CDROM is $_GET[CDROM]</p>");?>Если запрос страницы выполняется при помощи метода POST, то появляется группа POST-переменных, которые интерпретируются также и помещаются в массив $_POST. Константы Константы объявляются в РНР при помощи функции define(): define(CONSTANT, value) Первый параметр этой функции – имя константы, второй – её значение. При использовании константы на неё ссылаются по имени: <? define(CONSTANT1,15); define(CONSTANT2,"\x20"); // код пробела define(CONSTANT3,"Hello"); echo (CONSTANT1); echo (CONSTANT2); echo (CONSTANT3); ?>По традиции имена констант пишут буквами верхнего регистра. И хотя это только традиция, мы Вам рекомендуем ей следовать, поскольку плохие программисты получаются в том числе и из тех, кто не следовал хорошим традициям J. Существует функция defined(), которая проверяет, определена ли константа: <? define(CONSTANT,"Hello"); if (defined("CONSTANT")) { echo ("<p>CONSTANT is defined</p>"); }?>Типы данных в РНР. Преобразование типов Как уже было сказано, PHP предоставляет определенную гибкость в отношении типов переменных, т.е. с одной и той же переменной на протяжении программы можно работать и как со строкой, и как с числом. Однако, несмотря на это в РНР существуют набор основных типов данных, которые могут явно указываться при работе с переменными: 1. integer; 2. string; 3. boolean; 4. double; 5. array; 6. object. Есть функция gettype(), возвращающая тип, который РНР назначил переменной: <? $var = "5"; $var1 = 5; echo (gettype($var)); echo "<br>"; echo (gettype($var1)); ?>В первом случае РНР вернет string, во втором integer. Существует также функция settype(), которая явно устанавливает тип: <? $var = "5"; echo (gettype($var)); settype($var,integer); echo "<br>"; echo (gettype($var)); ?>Выполнение этого фрагмента кода приведет к такому же результату, как и предыдущего. Кроме функции settype() преобразование типов в РНР можно осуществлять при помощи операторов преобразования типов. Преобразование типов осуществляется путем указания перед переменной ее нового типа, взятого в скобки: $var = (int)$var; Соответственно, выполнение следующего кода приведет к тому, что РНР вернет integer: <? $var = "5"; // тип string $var = (int)$var; // преобразуем в int echo (gettype($var)); ?>Операторы
Арифметические операторы
Поразрядные операторы Эта группа операторов работает с битовыми представлениями значений целочисленных операндов. В основном эти операторы применяются для создания набора булевых флагов. В наших упражнениях мы будем использовать эти операторы очень редко, однако на всякий случай ниже приведен пример с использованием этих операторов.
Пример: <?php echo (4<<2); // равно 16 echo "<br>"; echo (5>>1); // равно 2 echo "<br>"; echo (6&5); // равно 4 echo "<br>"; echo (6|5); // равно 7 echo "<br>"; echo (6^5); // равно 3>?Разберем первый пример. Двоичный код для 4 равен 100, при сдвиге влево на 2 разряда код 100 становится равным 10000, что соответствует десятичному значению 16. Остальные примеры могут быть разобраны аналогично. Обратим внимание на то, что сдвиг влево на n позиций эквивалентен умножению на 2n, а сдвиг вправо уменьшает соответствующее значение в 2n раз с отбрасыванием дробной части результата (поэтому 5>>1 равно 2). Основное назначение этих операторов – быстрые вычисления. Так как их поддержка осуществляется на аппаратном уровне (процессор), алгоритмы, выполненные с использованием данных операторов получаются очень производительными. Логические операторы
Операторы этой группы, в отличие от поразрядных, работают с логическими переменными (boolean) и интенсивно используются в управляющих конструкциях: циклы и условия. Логические переменные, или более правильно, переменные типа Boolean имеют лишь два значения: true(истина) и false(ложь). В выражениях true и false можно заменить на 1 (любое отличное от 0 число) и 0, соответственно. Логически операторы для переменных типа Boolean выполняют роль операторов сложения, вычитания для обычных переменных. Оператор if (cond) проверяет условие cond, если его значение true – выполняется код в фигурных скобках, следующий за if, если false – код после оператора else. Если cond равен false – всё наоборот.
Результаты работы скрипта выглядят следующим образом: Переменная flag имеет значение true Если теперь заменить строчку $flag = true; // Истина на $flag = false; // ЛожьРезультат, выдаваемый тэгом измениться: Переменная flag имеет значение false Т.е. мы зашли в блок else, так как в операторе if условие ложно. Когда условие одно, как видите, всё просто. Когда условий больше - в дело вступают логические операторы: <?php $flag1 = true; // Истина $flag2 = true; // Истина if ($flag1 && $flag2) // И $flag1 И $flag2 истины { echo "<p>Условие: true (Оба флага истины)</p>"; // Да } else { echo "<p>Условие: false (Один из флагов ложен)</p>"; // Нет, один или оба ложны }?>Этот скрипт выведет: Условие: true (Оба флага истины). Если хотя бы один из операторов окажется равным false (или оба сразу) – будет выведено: Условие: false (Один из флагов ложен). Обязательно попробуйте поиграть с условиями: если вы не будете разбираться в условных операторах – Вы никогда не будете хорошим программистом ни на одном языке программирования. Если Вы считаете, что Вам не нужны условные операторы – Вам не нужен язык программирования. Заменим && (И) на || (ИЛИ) <?php $flag1 = true; // Истина $flag2 = false; // Ложь if ($flag1 || $flag2) // Хоть кто-то из двух флагов($flag1 $flag2) истинен { echo "<p>Условие: true (Один из флагов истин)</p>"; // Да } else { echo "<p>Условие: false (Оба флага ложны)</p>"; // Нет оба имеют значение false }?>Опять получаем: Условие: true. Для И и ИЛИ, как видим, возможны два варианта операторов, причем эти операторы с разными приоритетами. Приоритетность выполнения логических операторов: or > xor > and > || > && >! Иногда в условиях удобно использовать скобки для явного задания приоритета: <?php $flag1 = true; $flag2 = true; $flag3 = false; if ($flag1 && $flag2 || $flag3) { echo "<p>Условие истинно<p>"; } else { echo "<p>Условие ложно<p>"; }?>Результатом будет вывод фразы «Условие истинно», так как согласно приоритету исполнения сначала выполняется оператор &&, так как оба флага равны true – возвращается true, затем это выражение сравнивается с $flag3 (true || $flag3) – что возвращает тоже true, так как одно из сравниваемых равно true. Если же мы запишем <?php $flag1 = true; $flag2 = true; $flag3 = false; if ($flag1 && ($flag2 && $flag3)) { echo "<p>Условие истинно<p>"; } else { echo "<p>Условие ложно<p>"; }?>результатом будет «Условие ложно». Вообще программисты не любят запоминать порядок приоритетов, поэтому для того чтобы Ваш код легко читался (в том числе и Вами) лучше всегда использовать скобки. Т.е. в первом скрипте лучше записать if (($flag1 && $flag2) || $flag3) – тогда сразу становиться понятно, что имеется ввиду. Иногда нужно проверить условие безальтернативно, например, на ложность или истинность. Допустим, функция (func()) возвращает истину или ложь и в зависимости от этого нужно вывести на страничку те или иные теги. Например, функция mysql_query($query) – возвращает true если запрос к базе данных mySQL, размещённый в строке $query успешно выполнился и false – в противном случае.
Если Вам нужно среагировать только на удачное обращение, Вы можете записать: <?php if (mysql_query($query)) { echo "<p>Данные успешно занесены в базу данных.<p>"; }?>Если Вам нужно среагировать только на не удачные обращения, Вы, конечно, можете записать: <?php if (mysql_query($query)) {} else { echo "<p>Данные не были занесены в базу данных.<p>"; }?>Но это не элегантный, запутывающий способ – здесь самое время воспользоваться оператором отрицания:!, применение которого к переменной меняет её значение с true на false, а false на true: <?php if (!mysql_query($query)) { echo "<p>Данные не были занесены в базу данных.<p>"; }?>Задания к лабораторной работе №1: 1. Вычислить дробную часть среднего геометрического трех заданных положительных чисел. 2. По заданным коэффициентам и правым частям уравнений системы найти ее решение в предположении, что определитель системы не равен нулю. 3. Вычислить длину окружности, площадь круга и бъем шара одного и того же заданного радиуса. 4. Вычислить периметр и площадь прямоугольного треугольника по длинам двух катетов. 5. По координатам трех вершин некоторого треугольника найти его площадь и периметр. 6. По длинам двух сторон некоторого треугольника и углу (в градусах) между ними найти длину третьей стороны и площадь этого треугольника. 7. Найти произведение цифр заданного четырехзначного числа. 8. Определить число, полученное выписыванием в обратном порядке цифр заданного трехзначного числа. 9. По координатам четырех вершин некоторого прямоугольника найти его площадь и периметр. 10. Вычислить объём призмы, боковые грани которой квадраты, а основанием служит равносторонний треугольник, вписанный в круг радиуса R. Переключатель switch Переключатель switch является наиболее удобным средством для организации мультиветвления. Синтаксис переключателя таков: switch (expression) // переключающее выражение{ case value1: // константное выражение 1 statements; // блок операторов break; case value2: // константное выражение 2 statements; break; default: statements; }Управляющая структура switch передает управление тому из помеченных case операторов, для которого значение константного выражения совпадает со значением переключающего выражения. Если значение переключающего выражения не совпадает ни с одним из константных выражений, то выполняется переход к оператору, помеченному меткой default. В каждом переключателе может быть не более одной метки default, однако она может отсутствовать вообще. Приведем пример программы с переключателем. В этой программе выводятся названия нечетных целых десятичных цифр от 1 до 9 не меньше заданной, в зависимости от числа, указанного в форме test.html. Форма test.html не отличается от той, что мы уже использовали: <form action = "http://localhost/PHP/chapt2/switch.php" method="get"> number: <input type="text" name="number"/><br> <input type="submit"/></form> <?switch ($number) {case 1: echo ("one"); case 2: echo ("two"); case 3: echo ("free"); case 4: echo ("four"); case 5: echo ("five"); case 6: echo ("six"); case 7: echo ("seven"); case 8: echo ("eight"); case 9: echo ("nine"); break; default: echo ("This isn't number or number is > 9 or < 1"); }?>Так же, как и в случае условного оператора для переключателей допустимы любые степени вложенности, однако злоупотреблять этим без особой на то необходимости также не следует. Кроме уже сказанного о переключателе, приведенная программа демонстрирует действие оператора break, с помощью которого происходит выход из переключателя. Если поместить операторы break после вывода каждой из цифр, то в окне браузера мы увидим название только одной нечетной цифры. Как видим, после конструкции switch приведен составной оператор, однако это совершенно не обязательно – после switch может находиться любой оператор, помеченный служебным словом case. Заметим также, что в PHP в качестве меток case могут использоваться не только литералы, но и сами метки могут быть переменными. В качестве меток case в PHP не могут выступать только массивы и объекты. Задания к лабораторной работе №2: 1. Записать указанное действие в виде одного условного оператора: 2. Записать указанное действие в виде одного условного оператора: перераспределить значения переменных x и y так, чтобы в x оказалось большее из этих значений, а в y - меньшее; 3. Записать указанное действие в виде одного условного оператора: переменной a присвоить номер четверти плоскости, в которой находится точка с координатами x и y (). 4. Записать указанное действие в виде одного условного оператора: известно, что из четырех чисел , одно отлично от трех других, равных между собой; присвоить номер этого числа переменной n. 5. Записать последовательность операторов для решения указанной задачи: по номеру y (y>0) некоторого года определить номер его столетия (учесть, что, к примеру, началом 20 столетия был 1901, а не 1900). 6. Записать последовательность операторов для решения указанной задачи: считая, что стандартные функции sin и cos применимы только к аргументам из отрезка [0, p /2], вычислить y=sin x для произвольного числа x; 7. Если значение переменной w не равно 0 и при этом котангенс от w меньше 0.5, тогда поменять знак у w, а если значение w равно 0, тогда присвоить w значение 1. 8. Написать программу для решения указанной задачи: даны числа a, b, c (a 0). Найти вещественные корни уравнения ax2+bx4+c=0. Если корней нет, то сообщить об этом; 9. Если точка M(x,y) принадлежит внутренней области треугольника с вершинами A(a,0), B(0,b), O(0,0), то напечатать его площадь, в противном случае его периметр (a>0,b>0). 10. Если треугольник со сторонами a,b,c является равнобедренным, то найти его площадь, в противном случае найти его периметр. While Оператор while называется оператором цикла с предусловием. При входе в цикл вычисляется выражение условие, и, если его значение отлично от нуля, выполняется тело цикла. Затем вычисления выражения условия и операторов тела цикла выполняется до тех пор, пока значение выражения условия не станет равным нулю. Оператором while удобно пользоваться для просмотра всевозможных последовательностей, если в конце них находится заранее известный символ. (Это очень удобно в C++, к примеру для определения длины строки, поскольку в С++, по определению, строка есть последовательность символов типа char, заканчивающаяся нулевым символом). Пример простейшего цикла while: <? $var = 5; $i = 0; while (++$i <= $var) { echo ($i); echo ('<br>'); }?>Этот код выдает в окне браузера цифры от одного до пяти:
Для выхода из цикла применяется оператор break. При обнаружении этого оператора текущая итерация цикла прекращается, и последующие итерации не происходят. При выполнении следующего примере, несмотря на то, что переменная $var = 7, в окне браузера появятся цифры от 1 до 3. <? $var = 7; $i = 0; while (++$i <= $var) { echo ($i); echo ('<br>'); if ($i==3) break; }?>Иногда бывает нужно прервать только текущую итерацию, и перейти сразу к следующей. Для этого применяется оператор continue: <? $var = 7; $i = 0; while (++$i <= $var) { if ($i= =5) { continue; } echo ($i); echo ('<br>'); }?>В этом примере выводятся цифры от 1 до 7, кроме цифры 5:
Заметим, что если Вы условный оператор поставите после операторов echo, код будет ошибочным, и выведутся все цифры от 1 до 7, поскольку проверка условия выхода из цикла на данной итерации, будет происходить уже после выполнения этой итерации. Do…while Этот оператор называется оператором цикла с постусловием. При входе в цикл в любом случае выполняется тело цикла (т.е. цикл всегда будет выполнен хотя бы один раз), затем вычисляется условие, и если оно не равно 0, вновь выполняется тело цикла. <? $var = 5; $i = 0; do { echo ($i); echo ('<br>'); } while (++$i <= $var) ?>Результат:
Цикл с постусловием бывает полезен при обработке некоторых последовательностей, когда обработку нужно заканчивать не до, а после появления концевого признака. В следующем скрипте, мы по традиции выведем числа от 0 до 5: <? $var = 5; $i = 0; for ($i = 0; $i <= $var; $i++) { echo ($i); echo ('<br>'); }?>Результат аналогичен, показанному на предыдущем рисунке. For Как уже говорилось, итерационный цикл имеет следующий формат: for (expression1;expression2;expression3) { statements; }Здесь expression1 (инициализация цикла) – последовательность определений и выражений, разделяемая запятыми. Все выражения, входящие в инициализацию, вычисляются только один раз при входе в цикл. Как правило, здесь устанавливаются начальные значения счетчиков и параметров цикла. Смысл выражения-условия (expression2) такой же как и у циклов с пред- и постусловиями. При отсутствии выражения-условия предполагается, что его значение всегда истинно. Выражения expression3 вычисляются в конце каждой итерации после выполнения тела цикла. В следующем скрипте, мы по традиции выведем числа от 0 до 5: <? $var = 5; $i = 0; for ($i = 0; $i <= $var; $i++) { echo ($i); echo ('<br>'); }?>
Задания для лабораторной работы №3: 1. Вычислить n!,n!!. 2. Вычислить 10!, используя все три вида циклов. 3. Найти f-первое число Фибоначчи, большее m (m>1). 4. Вычислить y=sin1+sin1.1+sin1.2+...+sin2. 5. Напечатать все простые делители заданного натурального числа. 6. Определить, является ли заданное число палиндромом, т.е. таким, десятичная запись которого читается одинаково слева направо и справа налево. 7. Вычислить s- сумму квадратов всех целых чисел, попадающих в интервал (ln(x),exp(x)),x>1. 8. Вычислить y=1!+2!+3!+...+n! (n>1). 9. Вычислить k- количество точек с целочисленными координатами попадающих в круг радиуса R (R>0) с центром в начале координат. 10. Напечатать в возрастающем порядке все трехзначные числа, в десятичной записи которых нет одинаковых цифр (операции деления не использовать).
Функция htmlspecialchars Вообще говоря, эта функция относится к функциям преобразования символов. Эту функция делает одну простую, но важную вещь – производит преобразование спецсимволов в их HTML эквиваленты. Попросту говоря, эта функция гарантирует, что если Вы вдруг вздумаете написать в гостевой книге или на форуме какой-то код (php, javascript и т.д.) он отобразиться совершенно нормально, но выполняться не будет! Т.е. функцию надо применять, если нужно вывести в браузере какой-то код. Кроме того, эта функция избавляет Вас от людей, которым нечем заняться кроме как писать в Ваших формах ввода какие либо скрипты. Ну а теперь, собственно, о функции. Синтаксис: string htmlspecialchars ( string str [, int quote_style [, string charset]] );Первый аргумент – строка, в которой надо выполнить преобразование. В качестве второго необязательного аргумента принимается константа, задающая режим преобразования кавычек. По умолчанию, используется ENT_COMPAT, преобразующая двойные кавычки, при этом одиночные остаются без изменений. В режиме ENT_QUOTES преобразуются и двойные, и одиночные кавычки. а в режиме ENT_NOQUOTES и двойные, и одиночные кавычки остаются без изменений. Третий необязательный аргумент принимает строку, представляющую набор символов, используемых в преобразовании (по умолчанию ISO-8859-1). К примеру, если Вы обрабатываете какое-то сообщение $msg формы, то обработка его функцией htmlspecialchars()возможна следующим образом: $msg = htmlspecialchars ( $msg );Давайте напишем примитивный php скрипт, который будет отображать данные, вводимые в форме. <? $action = $_POST["action"]; if ( empty($action )) {?> <HTML> <HEAD> <TITLE>Примерчик</TITLE> </HEAD> <BODY> <center> <table border=0> <form action=test1.php method=post> <input type=hidden name=action value=post> <tr><td colspan=2>Сообщение<br><textarea cols=50 rows=8 name=msg> <? echo $msg; ?> </textarea></td></tr> <tr><td colspan=2><input type=submit value='Добавить'></td></tr> </form> </table> </center> </BODY> </HTML> <? }?>Ничего сложного, просто форма для ввода сообщения. Выводится и обрабатывается введенное сообщение файлом, указанным action’е формы (test1.php). Код, написанный в этом файле тоже прост: <? $msg = substr ( $_POST["msg"],0,1024 ); $msg = htmlspecialchars ( $msg ); print "<P>".$msg."</P>\n"; ?>Вроде как все понятно. Выделяем из переменной $_POST сообщение (о функции substr() смотрите чуть ниже), обрабатываем это сообщение функцией htmlspecialchars() и выводим. А теперь давайте немного пошутим, и введем в форму для вода сообщения вместо безобидного текста вот такой javascript-код (пока тоже безобидный): <Script Language="JavaScript"> alert("Приветик!"); // функция вывода в JavaScript </Script>Т.е. наша форма примет следующий вид: В случае если при обработке сообщения мы использовали эту чудо-функцию, ничего страшного не произойдет и мы просто увидим текст, который набрали. А вот если, мы не обработали сообщение функцией htmlspecialchars(), то мы увидим уже не текст скрипта, а результат его выполнения: Функции поиска в тексте Substr() Синтаксис: string substr ( string string, int start[, int length] )Эта функция возвращает часть строки. Первый аргумент – исходная строка; второй – положение в строке, которую надо вернуть, первого символа (отсчет начинается с нуля); третий – длина строки в символах, которую надо вернуть. Если третий аргумент не указан, то возвращается вся оставшаяся часть строки. Пример: <? $string = substr("Hello, world!", 6, 1); echo ( $string ); ?>Результат выполнения – символ "w". Если же третий параметр не указывать, т.е. написать то возвратиться подстрока "world!".
Strpos() Синтаксис: string strpos(string haystack, string needle[, int offset])Эта функция обеспечивает действие, обратное функции substr. Т.е. она возвращает позицию в строке haystack, в которой найдена переданная ей подстрока needle. Т.е. следующий скрипт <? $string = strpos ( "Hello, world!", "world" ); echo( $string ); ?>вернет нам число 7. Необязательный параметр offset позволяет указать в строке позицию, с которой надо начинать поиск:
Strrpos() Синтаксис: string strrpos ( string haystack, string needle )Эта функция ищет в строке haystack последнюю позицию, где встречается символ needle.
Strstr() Синтаксис: string strstr ( string haystack, string needle )Функция strstr() возвращает участок строки, заданной в параметре haystack, начиная с первого фрагмента, указанного в параметре needle и до конца строки. В случае неудачи функция возвращает false. Пример: <? $url = "http://www.softtime.ru"; $www = strstr($url,"w"); echo ( $www ); ?>Результат: www.softtime.ru Эта функция чувствительна к регистру. Заметим также, что в случае, если needle не является строкой, то значение преобразуется в целое и используется как код искомого символа.
Strchr() Синтаксис: string strchr ( string haystack, string needle )Данная функция работает абсолютно идентично функции strstr(): <? $url = "http://www.softtime.ru"; $www = strstr($url,"w"); echo ( $www ); ?>Результат: www.softtime.ru
Stristr() Синтаксис: string stristr ( string haystack, string needle )Эта функция работает абсолютно аналогично функции strstr(), только является нечувствительной к регистру.
Strrchr() Синтаксис: string strrchr ( string haystack, string needle )А эта функция отличается от аналогичных ей тем, что осуществляет поиск последнего вхождения подстроки. Т.е. функция strrchr() возвращает участок строки, заданной в параметре haystack, начиная с последнего фрагмента, указанного в параметре needle и до конца строки. В случае неудачи возвращает false. Чувствительна к регистру. В случае если needle не является строкой, то значение преобразуется в целое и используется как код искомого символа. Давайте посмотрим, какая у нас директория прописана последней в переменной окружения $PATH: <p> <font color=red> Это все, что у меня есть:)</font></p> <? echo ( $PATH ); ?> <p> <font color=red> А это – из последнего:</font></p> <? $dir = substr ( strrchr($PATH, ";"), 1 ); echo ( $dir ); ?>
substr_count() Синтаксис: int substr_count ( string haystack, string needle )Функция substr_count() находит количество вхождений фрагмента в строку. Она возвращает число фрагментов needle, присутствующих в строке haystack. Пример: <? $str = "dfhd@ffs@dfskfk@asas"; $substr_count = substr_count ( $str,"@" ); echo ( $substr_count ); ?>Результат: 3.
Strspn() Синтаксис: int strspn ( string str1, string str2 )Функция strspn() определяет присутствие начальных символов в строке. Она возвращает длину начального фрагмента строки str1, состоящего полностью из символов, которые есть в строке str2. Пример: <? $str = "dfhd@ffs@dfskfk@asas"; $substr_count = strspn ( $str,"df" ); echo ( $substr_count ); ?>Результат: 2.
Strcspn() Синтаксис: int strcspn ( string str1, string str2 )Обратная функции strspn() функция strcspn() Определяет отсутствие начальных символов в строке. Функция strcspn() возвращает длину начального фрагмента строки str1, состоящего полностью не из символов, которые есть в строке str2. Strlen() возвращает длину строки, которую принимает в качестве аргумента: <? $string = "Hello, world!!!"; $string_len = strlen($string); echo ( $string_len ); ?>Chr() Эта функция принимает в качестве аргумента ASCII код символа и возвращает соответствующий этому коду фактический символ: <? $str = chr(36); echo ( $str ); // возвращает символ "$"?>Ord() Выполняет действие, обратное функции chr(): <? $str = ord('$'); echo( $str ); // возвращает 36?>Trim-функции (функции удаления пробельных символов) Это очень полезная группа функций, без которых сложно обойтись при работе со строками. К пробельным символам относятся символы "\n", "\r", "\t", "\v", "\0" и собственно пробел. Особенно часто мы с этими функциями будем работать при изучении файлового ввода-вывода. Trim() Эта функция принимает в качестве своего единственного аргумента строку, и удаляет из нее пробелы слева и справа. Пример: <? $string = trim(" Hello, world! "); ?>Давайте для того, чтобы убедиться, что эта функция нас не обманывает, выведем ее длину до и после удаления из нее пробелов. Напишем простенький скрипт: <? $str = " Hello, world! "; $str1 = trim(" Hello, world! "); $str_len = strlen($str); $str1_len = strlen($str1); echo( " размер исходной строки '$str' = $str_len, <br> размер строки после удаления пробелов = $str1_len" ); ?>Ltrim(), rtrim() и chop() Функция ltrim() удаляет из строки начальные пробельные символы (т.е., те которые слева); rtrim()– конечные пробельные символы. Функция chop() является синонимом функции rtrim(). Wordwrap() Синтаксис: string wordwrap ( string str [, int width [, string break [, int cut]]] )Функция wordwrap() разбивает исходный текст на строки с определенными завершающими символами. Согласно синтаксису, эта функция разбивает блок текста str на несколько строк, которые завершаеются символами break, так, чтобы в одной строке было не более width букв. Поскольку разбиение происходит по границам слов, текст остается вполне читаемым. К примеру: <? $str = "Вставай, страна огромная"; $mod_str = wordwrap ( $str,5,"\t" ); echo( $mod_str );?>
str_replace() Синтаксис: string str_replace ( string from, string to, string str )Функция str_replace() заменяет в исходной строке str одни подстроки на другие. Т.е. функция заменяет в строке str все вхождения подстроки from на to и возвращает результат. Эта функция может работать с двоичными строками. Функция, вообще говоря, нужная. К примеру, если Вы пишите что-то типа гостевой книги, форума, и хотите, чтобы в форме ввода для выделения теста можно было пользоваться стандартными тегами HTML, Вы можете с помощью этой функции заменить символы, которые Вы выбрали для форматирования на стандартные теги НТML. К примеру: $txt = str_replace ( "[B]","<B>",$txt );Т.е. если Вы используете для отображения текста полужирным шрифтом символы "[B]", Вы должны их заменить на символ "<B>", используемые в НТМL. Позже, при написании реального проекта, мы обязательно будем использовать как эту, так и многие другие, рассмотренные нами функции.
substr_replace() Синтаксис:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2020-11-28; просмотров: 662; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.1.158 (0.19 с.) |