Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Лабораторная работа №1 «Основы PHP»Содержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте Лабораторная работа №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-страницу. Например: <php echo ("<p>Hello</p>"); // нормальный комментарий?> // а вот этот комментарий отобразиться броузером. <!-- Комментарий HTML. Будет виден в исходном коде 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 – всё наоборот. <?php $flag = true; // Истина if ($flag) { echo "<p>Переменная flag имеет значение true</p>"; } else { echo "<p>Переменная flag имеет значение false</p>"; }?>Результаты работы скрипта выглядят следующим образом: Переменная 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. Записать указанное действие в виде одного условного оператора: известно, что из четырех чисел 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 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() Синтаксис: string substr_replace ( string str, string replacement, int start [, int length] )Эта функция заменяет в исходной строке одни подстроки на другие. Она возвращает строку str, в которой часть от
|
||||||||||||||||||||||||||||||||||||||||||||
|
Последнее изменение этой страницы: 2020-11-28; просмотров: 809; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.196 (3.796 с.) |
|||||||||||||||||||||||||||||||||||||||||||||