web дизайн сайтов, создание сайтов, продвижение сайтов

Веб дизайн и всё о нем. продвижение сайтов, разработка сайтов, web изготовление сайтов

Функциональные возможности поиска и замены могут оказаться исключительно полезными при работе со строками. Поиск и замену можно использовать для персонализации документов, сгенерированных РНР, например, для замены «пате» именем конкретного лица, a «address>> — его адресом. Эти функции можно использовать также для цензурирования определенных терминов, например, в приложении форума или даже в нашем приложении интеллектуальной формы отправки электронной почты.
С этой целью опять можно воспользоваться строковыми функциями или функциями обработки регулярных выражений.
Чаще всего для замены применяется строковая функция str_replace () (”string replace” — “замена строки”). Она имеет следующий прототип:
mixed str_replace(mixed needle, mixed new_needle, mixed haystack[, int ucount]);
Эта функция заменяет все экземпляры строки needle в строке haystack на строку new_needle и возвращает новую версию haystack.
»

Функции strpos () и strrpos () действуют аналогично функции strstr () и отличаются от нее только тем, что вместо подстроки они возвращают числовую позицию строки needle внутри строки haystack. Особенно интересно, что в официальном руководстве по РНР рекомендуется применять strpos () вместо strstr () по причине ее высокой скорости.
Функция strpos () (”string position” — “позиция в строке”) имеет следующий прототип:
string strpos(string haystack, string needle [, int offset]);
Возвращаемое целочисленное значение представляет собой первое вхождение строки needle внутри строки haystack. Как обычно, первый символ занимает нулевую позицию.
»

Для поиска строки внутри другой строки можно использовать любую из функций strstr(),strchr(), strrchr() или stristr().
Функция strstr () (”string in string” — “поиск строки в строке”) является наиболее общей и может использоваться для поиска соответствующей строки или символа внутри более длинной строки. В РНР функция strchr () (”character in string” — “поиск символа в строке”) полностью совпадает с функцией strstr (), хотя ее имя предполагает, что она применяется для поиска символа в строке, аналогично ее версии в языке С. В РНР любая из этих функций может применяться для поиска строки внутри строки, в том числе для поиска строки, состоящей только из одного символа.
Функция strstr () имеет следующий прототип:
string strstr(string haystack, string needle);
В качестве параметра этой функции передается строка »

На практике часто возникает необходимость проверить наличие конкретной подстроки в более длинной строке. Обычно такое частичное сопоставление приносит больше пользы, нежели проверка строк на предмет полного совпадения.
В примере с интеллектуальной формой отправки электронной почты требуется выполнить поиск ключевых фраз в данных обратной связи, поступающих от пользователей, и отправить сообщение электронной почты в соответствующее подразделение компании “Автозапчасти от Боба”. Если мы хотим направлять сообщения электронной почты, в которых речь идет о магазинах Боба, менеджеру розничной продажи, требуется знать, встречается ли в этих сообщениях слово “shop” (”магазин”) или его производные.
»

Длину строки можно проверить с помощью функции strlen(). Если передать этой функции строку, она вернет ее длину. Например, оператор strlen ( hello ) возвращает значение 5.
Эту функцию можно задействовать для проверки правильности вводимых данных. Рассмотрим пример с адресом электронной почты для создаваемой нами формы, который хранится в переменной $email. Один из основных способов проверки правильности адреса электронной почты, хранящегося в переменной $email, — это проверка его длины. По нашему мнению, минимальная длина адреса электронной почты составляет шесть символов, например, если полный адрес содержит код страны без какого-либо домена второго уровня, однобуквенное имя домена и »

Функции strcmp (), strcasecmp () и strnatcmp () служат для упорядочения строк, которое может понадобиться при сортировке данных.
Прототип функции strcmp () (”string comparing” — “сравнение строк”) имеет вид:
int strcmp(string strl, string str2);
Функция принимает две строки, которые и сравнивает. Если они равны, функция возвращает значение 0. Если в лексикографическом порядке строка strl следует за (или больше чем) строкой stx2, функция strcmp () вернет число больше 0. Если строка strl меньше строки str2, функция strcmp () вернет число меньше 0. Эта функция чувствительна к регистру.
Функция strcasecmp () идентична рассмотренной выше функции и отличается от нее только тем, что она к регистру не чувствительна.
»

Функция substr () (”substring” — “подстрока”) позволяет получить доступ к подстроке между заданными начальной и конечной позициями в исходной строке. Для нашего примера она не подходит, однако может оказаться полезной, если требуется получить доступ к некоторым частям строк фиксированного формата.
Функция substr () имеет следующий прототип:
string substr(string строка, int начало[, int длина]);
Эта функция возвращает подстроку из строки строка, начиная с позиции начало длиной длина.
Рассмотрим примеры использования показанной ниже тестовой строки: $test = ‘Вы прекрасно обслуживаете клиентов’;
Если вы вызовете substr (), задав некоторое положительное число в качестве параметра начало (и ничего больше), мы получим строку, начиная с позиции начало и до конца строки. Например:
substr($test, 3);
»

В отличие от функции explode (), которая позволяет за один вызов делить на части сразу всю строку, функция strtok () (”string token” — “лексема строки”) дает возможность получить фрагменты (называемые лексемами) строки, по одному за вызов. Эта функцию следует рассматривать как полезную альтернативу функции explode () при обработке слов из строки по одному за раз.
Прототип функции strtok () выглядит следующим образом:
srting strtok(string исх_строка, string разделитель) ;
В качестве разделителя разделитель можно использовать символ или строку символов, однако следует иметь в виду, что строка ввода будет разделяться по каждому из символов разделителя, а не по всей строке разделителя (как имеет место в функции explode ()).
Вызов функции strtok () не столь прост, как может показаться, если судить только по ее прототипу. Для получения первой лексемы из строки нужно вызвать »

Первая функция, explode (), которой можно было бы воспользоваться для этих целей, имеет следующий прототип:
array explode(string разделитель, string исх_строка [, int лимит]);
Эта функция принимает строку исх_строка и делит ее на части по заданной разделительной строке разделитель. Части строки возвращаются в виде массива. Можно ограничить число таких частей с помощью необязательного параметра ограничения лимит, который появился в версии РНР 4.0.1.
Чтобы получить имя домена из адреса электронной почты в сценарии, можно воспользоваться следующим кодом:
$email_array = explode!’@', $email);
В результате этого вызова функции explode () адрес электронной почты делится на две части: имя пользователя, которое сохраняется в $email_array[0], и имя домена, которое сохраняется в $email_array[1]. Теперь можно проверить имя домена, чтобы определить источник сообщения клиента и переадресовать сообщение »

Кроме использования строковых функций для визуального преобразования строки, некоторые из этих функций можно применять для преобразования строки с целью её сохранения в базе данных. Хотя процесс записи в базу данных будет обсуждаться лишь во второй части книги, в этой главе мы рассмотрим форматирование строк для последующего их хранения в базе данных.
Некоторые символы вполне могут быть частью строки, однако иногда они стают источником проблем, в особенности при записи строки в базу данных, поскольку она может интерпретировать их как управляющие символы. Такими символами являются кавычки (одинарные и двойные), символы обратной косой черты (\) и символ NULL.
»

Можно также изменять регистр строки. Эта возможность не особенно полезна для разрабатываемого нами приложения, тем не менее, мы рассмотрим несколько кратких примеров.
Применительно к строке темы, $subject, используемой для сообщения электрон-вой почты, регистр можно изменять с помощью нескольких функций. Результаты воспользования »

В РНР имеется набор функций, которые можно использовать для переформатирования строк различными способами.
Использование HTML-форматирования: функция nl2br ()
Функция nl2br () принимает строку в качестве параметра и заменяет в ней все символы новой строки XHTML-дескриптором
(или HTML-дескриптором
в версиях РНР, предшествующих 4.0.5). Данная возможность полезна при выводе длинной строки в окне браузера. Например, мы воспользовались этой функцией для форматирования данных обратной связи с клиентами при выводе их на экран:
<р>Ваша реакция (текст показан ниже) отправлена.

Вспомните, что HTML игнорирует обычные пробелы, поэтому если вы не отфильтруете этот вывод с помощью функции nl2br (), он появится на экране в виде одной сплошной строки (за исключением символов новой строки, расставленных самим браузером). Результат можно видеть
Для получения того же результата с помощью функции printf () применяется следующая конструкция:
»

Часто строки, вводимые пользователем (как правило, в интерфейсе с HTML-формой), приходится очищать от служебных символов, прежде чем их можно будет использовать по прямому назначению. В следующих разделах описаны функции, которые служат для этих целей.
Усечение строки: функции chop (), ltrim() и trim()
Первый шаг в этом направлении предусматривает удаление лишних пробелов. Xотя этот шаг и не обязателен, он может оказаться полезным, если предполагается хранение строки в файле или базе данных либо ее сравнение с другими строками.
Для упомянутой цели в РНР предусмотрены три полезных функции. Функции trim () служит для приведения вводимых данных в порядок:
$name = trim($name); $email = trim($email); $feedback = trim($feedback);
Функция trim() удаляет пробелы в начале и конце строки и возвращает результирующую строку. При этом символами, которые она удаляет, по умолчанию считаются символы новой строки (\п), возврата каретки (\г), символы горизонтальной (\t) и вертикальной (\хОВ) табуляций, конца строки (\0) и обычные пробелы. Вы можете также указать второй параметр, который содержит список символов, подлежащих удалению из строки, вместо списка по умолчанию. В зависимости от конкретной преследуемой вами цели вместо этой функции можно использовать ltrimf) или rtrim( Обе они аналогичны функции trim () в том, что принимают редактируемую строк) в качестве параметра и возвращают отформатированную строку. Различие между ними состоит в том, что функция trim () удаляет пробелы в начале и конце строки, ltrim удаляет пробелы только в начале строки (слева), a rtrim() — только в конце строки (справа).

До сих пор мы использовали языковую конструкцию echo для вывода строк в окне браузера. РНР поддерживает также языковую конструкцию print (), которая выполняет ту же операцию, что и echo, при этом возвращает значение true или false, в зависимости от того, успешно ли она была выполнена.
Обе эти конструкции выводят строку “как она есть”. С помощью функций printf () и sprintf () можно выполнять более сложное форматирование. Фактически эти функции реализуют одни и те же действия, однако printf () выводит отформатированную строку в окне браузера, a sprintf () только возвращает сформатиро-ванную строку.
Если вам раньше приходилось программировать на языке С, то вы сразу определите, что эти функции концептуально подобны своим С-версиям. Обратите, однако, знимание на »

Технические:

* скорость приема/передачи информации (скорость соединения с Интернет);
* характеристики монитора (размер экрана, разрешающая способность, количество цветов и пр.), качество монитора;
* установка или отключение возможности просмотра графики при просмотре сайта;
* версия браузера;
»