Функции объединения/разделения строк 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Функции объединения/разделения строк



str_repeat()

Синтаксис:

string str_repeat ( string str, int number )

Функция повторения строки. Повторяет строку str то количество раз, которое указано в параметре number.

К примеру:

<? echo str_repeat("Hello!",3 ); // выводит Hello! Hello! Hello!?>

str_pad()

Синтаксис:

string str_pad ( string strinput, int pad_length [, string pad_string [, int pad_type]] )

Эта функция дополняет строку другой строкой до определенной длины. Аргумент strinput задает исходную строку. Аргумент pad_length задает длину возвращаемой строки. Если он имеет меньшее значение, чем исходная строка, то добавления не производится. Необязательный аргумент pad_string указывает на то, какую строку использовать в качестве дополнения. По умолчанию используются пробелы. Необязательный аргумент pad_type указывает, с какой стороны следует дополнять строку: справо, слево или с обеих сторон. Аргумент pad_type может принимать следующие значения:

· STR_PAD_RIGHT (по умолчанию)

· STR_PAD_LEFT

· STR_PAD_BOTH

 

chunk_split()

Синтаксис:

string chunk_split ( string str [, int chunklen [, string end]] )

Эта функция возвращает фрагмент строки. Функция chunk_split() возвращает строку, в которой между каждым блоком строки str длиной chunklen (по умолчанию chunklen = 76) вставляется последовательность из разделителей end (по умолчанию: end = "\r\n").

 

Strtok()

Синтаксис:

string strtok ( string arg1, string arg2 )

Фунция возвращает строку по частям. Она возвращает часть строки arg1 до разделителя arg2. При последующих вызовах функции возвращается следующая часть до следующего разделителя, и так до конца строки. При первом вызове функция принимает два аргумента: исходную строку arg1 и разделитель arg2. Обратите внимание, что при каждом последующем вызове arg1 указывать не надо, иначе будет возвращаться первая часть строки.

Пример:

<? $str = "I am very glad to see%you% adhahjasdad";$tok = strtok ( $str, " " ); while( $tok )    { echo ( $tok ); echo ( " " ); $tok = strtok ( " %" ); }; // выведет: "I" "am" "very" "glad" "to" "see" "you":?>

Т.е., видите, что абракадабра, которую мы написали в конце строки, не выводится. Это результат того, что когда в строке последовательно встречаются два или более разделителей, функция возвращает пустую строку, что, к примеру, может прекратить цикл обработки, как в этом примере.

 

Explode()

Синтаксис:

string explode ( string arg, string str [, int maxlimit] )

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

Пример:

<? $str = "one two three for five"; $str_exp = explode ( " ", $str ); /* теперь $str_exp = array([0] => one, [1] => two, [2] => three, [3] => for, [4] => five) */?>

 

Implode()

Синтаксис:

string implode ( string var, array param )

Функция implode() является обратной функции explode() и производит объединение массива в строку. Функция возвращает строку, которая последовательно содержит все элементы массива, заданного в параметре param, между которыми вставляется значение, указанное в параметре var. Для примера выведем все то, что мы только что "умассивили" функциейexplode(), используя пробел в качестве разделителя:

Пример:

<? $str = "one two three four five"; $str_exp = explode ( " ", $str ); /* $str_exp = array([0] => one, [1] => two, [2] => three, [3] => four, [4] => five) */ $str_imp = implode ( " ", $str_exp ); echo( $str_imp );

Join()

Синтаксис:

string join ( string var, array param )

Аналог функции implode() - производит объединение массива в строку.

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

Функции сравнения строк

Strcmp()

Синтаксис:

int strcmp ( string str1, string str2 )

Эта функция сравнения строк. Она сравнивает две строки и возвращает:

· 0 - если строки полностью совпадают;

· 1 - если, строка str1 лексикографически больше str2;

· 1 – если, наоборот, строка str1 лексикографически меньше str2

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

Пример:

<? $str1 = "ttt"; $str2 = "tttttttttt"; echo( "Result of strcmp ($str1, $str2) is "); echo( strcmp ( $str1, $str2 )); echo( "<br>" ); echo( "Result of strcmp ($str2, $str1)> is "); echo( strcmp ( $str2, $str1 )); echo( "<br>" ); echo( "Result of strcmp ($str1, $str1) is "); echo( strcmp ($str1,$str1 ));?>

 

Strncmp()

Синтаксис:

int strncmp ( string str1, string str2, int len )

Эта функция отличается от strcmp() тем, что сравнивает начала строк, а точнее первые len байтов. Если len меньше длины наименьшей из строк, то строки сравниваются целиком.

В остальном функция ведет себя аналогично strcmp(), т.е. возвращает:

· 0 - если строки полностью совпадают;

· 1 - если, строка str1 лексикографически больше str2;

· 1 – если, наоборот, строка str1 лексикографически меньше str2

Сравнение также проводится побайтово, поэтому функция чувствительна к регистру.

 

Strcasecmp()

Синтаксис:

int strcasecmp ( string str1, string str2 )

Функция работает аналогично strcmp(), только при работе не учитывается регистр букв.

 

Strncasecmp()

Синтаксис:

int strncasecmp ( string str1, string str2, int len )

Функция strncasecmp() cравнивает начала строк без учета регистра.

 

Strnatcmp()

Синтаксис:

int strnatcmp ( string str1, string str2 )

Производит так называемое "естественное" сравнение строк.

Об этой функции поговорим поподробнее. Данная функция является имитатором сравнение строк человеком, т.е. она сравнивает строки так, как их сравнивал бы человек. Т.е., если, к примеру, мы будем сравнивать файлы с названиями pict1.gif, pict20.gif, pict2.gif, pict10.gif, то обычное сравнение приведет к следующему их расположению: pict1.gif, pict10.gif, pict2.gif, pict20.gif. Естественная же сортировка даст результат, который нам более привычен: pict1.gif, pict2.gif, pict10.gif, pict20.gif.

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

<? $array1 = $array2 = array("pict10.gif", "pict2.gif", "pict20.gif", "pict1.gif"); echo( "обычная сортировка:" ); echo ( "<br>" ); usort ( $array1, strcmp ); print_r ( $array1 ); echo ( "<br>" ); echo( "естественная сортировка:" ); echo( "<br>" ); usort ( $array2, strnatcmp ); print_r ( $array2 );?>

 

Strnatcasecmp()

Синтаксис:

int strnatcasecmp ( string str1, string str2 )

Производит "естественное" сравнение строк без учета регистра. Функция выполняет то же самое, что и strnatcmp(), только без учета регистра.

 

similar_text()

Синтаксис:

int similar_text ( string str_first, string str_second [, double percent] )

Эта функция производит определение схожести двух строк.

Функция similar_text() определяет схожесть двух строк по алгоритму Оливера. Функция возвращает число символов, совпавших в строках str_first и str_second. Третий необязательный параметр передается по ссылке и в нем сохраняется процент совпадения строк.

Пример:

<? $str1 = "Hello, world!"; $str2 = "Hello!"; $var = similar_text ( $str1,$str2 ); $var1 = similar_text ( $str1, $str2, &$tmp );  // параметр $tmp передаем по ссылке echo( "Результат выполнения функции similar_text() для строк $str и $str1 в количестве символов:" ); echo( "<br>" ); echo( "$var"); echo( "<br>" ); echo( "и в процентах:" ); echo( "<br>" ); echo( $tmp ); // для вывода информации в процентах обращаемся к $tmp?>

Функции работы с URL

parse_url()

Функция обрабатывает URL и возвращает его компоненты.

Синтаксис:

array parse_url ( string url )

Эта функция возвращает ассоциативный массив, включающий множество различных существующих компонентов URL: "scheme", "host", "port", "user", "pass", "path", "query" и "fragment".

И если мы напишем вот такой скриптик

Пример:

<? $url = "http://www.google.com.ru/search?hl=ru&ie=UTF-8&oe=UTF-8&q=softtime&lr="; $arr = parse_url ( $url ); print_r ( $arr );?>

 

parse_str()

Заносит компоненты URL в переменные.

Синтаксис:

void parse_str ( string str [, array arr] )

Функция parse_str() интерпретирует строку str так, как если бы эта строка содержала в себе переменные и их значения и передавалась бы в URL. Т.е. функция устанавливает для этих переменных значения. Если задан второй необязательный параметр arr, то значения, найденные при помощи функции parse_str(), сохраняться не в глобальных переменных, а в элементах указанного массива. Пример приводить не буду, вроде все понятно.

 

Rawurlencode()

Функция кодирования URL.

Синтаксис:

string rawurlencode ( string str )

Функция rawurlencode возвращает строку, в которой все не алфавитно-цифровые символы, за исключением дефиса "-", знака подчеркивания "_" и точки ".", заменены последовательностями: знак процента (%), за которым следуют две шестнадцатеричные цифры, обозначающие код символа. Кодирование нужно для того, чтобы буквенные символы не обрабатывались как разделители URL-строки и не искажались при передаче в сетях.

 

Rawurldecode()

Производит декодирование URL.

Синтаксис:

string rawurldecode ( string str )

Думаю, что с этой функцией все понятно, добавлю лишь, что она аналогична функции urldecode(), но не воспринимает "+" как пробел.

Давайте для примера на эти две функции что-нибудь закодируем и раскодируем.

<? $url = "http://www.google.com.ru/search?hl=ru&ie=UTF-8&oe=UTF-8&q=софттайм&lr="; echo( "исходная строка: $url" );echo( "<br>" ); echo( "закодировали:" );echo( "<br>" ); $url_code = rawurlencode($url ); echo( $url_code );echo( "<br>" ); echo( "и раскодировали:" );echo( "<br>" ); $url_decode = rawurldecode ( $url_code ); echo( $url_decode );?>

Функции преобразования регистра

Strtolower()

Функция производит преобразование символов строки в нижний регистр.

Синтаксис:

string strtolower ( string str )

Пример:

<? $str = "HELLO WORLD"; $str = strtolower ( $str ); echo $str; // выведет "hello world"?>

 

Strtoupper()

Производит преобразование строки в верхний регистр.

Синтаксис:

string strtoupper ( string str )

Отмечают, что функция не очень хорошо иногда работает с русскими буквами.

Пример:

<? $str = "Hello World"; $str = strtoupper ( $str ); echo $str; // выведет HELLO WORLD?>

 

Ucfirst()

Производит преобразование первого символа строки в верхний регистр.

Синтаксис:

string ucfirst ( string str )

Функция возвращает строку, с заглавным первым символом. При конвертации символов кириллицы могут быть недоразумения.

<? $str = "hello world"; $str = ucfirst ( $str ); echo $str; // выведет Hello world?>

 

Ucwords()

Производит преобразование первого символа каждого слова строки в верхний регистр.

Синтаксис:

string ucwords ( string str )

Возвращает строку, у которой первый символ каждого слова в строке заглавный.

Под словом понимается участок строки, которому предшествует пробельный символ: пробел, переход на новую строку, прогонка страницы, возврат каретки, горизонтальная и вертикальная табуляция.

<? $str = "hello world"; $str = ucwords ( $str ); echo $str; // выведет Hello World?>

 

Задание 1 к лабораторной работе №4:

1. Для заданного текста определить длину содержащейся в нем максимальной последовательности цифр 0, 1, 2,...,9.

2. Напечатать все слова заданного предложения (слова разделены пробелами), состоящие из тех же букв, что и первое слово предложения.

3. Слова в предложении разделены пробелами. Упорядочить слова в соответствии с ростом их длины.

4. Из заданного текста выбрать и напечатать те символы, которые встречаются в нем ровно 1 раз, в том порядке, как расположены в тексте.

5. Определить число вхождений слова в текст, если слова в тексте разделены пробелами.

6. Заданы в тексте три ключевых слова. Определить, встречаются или нет ключевые слова в тексте.

7. Отредактировать данное предложение, удаляя из него слова, в которых встречаются совпадающие последовательные символы.

8. Найти все слова, которые встречаются в каждом из двух заданных предложений.

9. Отредактировать заданное предложение, удаляя из него все слова с нечетными номерами и переворачивая слова с четными номерами.

10. Дано предложение. Переписать предложение, переставляя слова в нем в обратном порядке.

 

Задание 2 к лабораторной работе №4:

1. В предложения поменять первые символы "М" в словах на символ "П" (Пример. Входная строка: Мама мыла раму. Результат: Папа пыла паму). Если таких замен нет, то вывести об этом сообщение.

2. Определить наименьшую длину слова в заданной строке.

3. Заменить все строчные первые символы в словах предложения на заглавные.

4. Подсчитать, сколько слов в предложении оканчиваются буквой "я".

5. Вывести на экран слова предложения, которые начинаются и заканчиваются на одну букву.

6. Какой процент слов в предложении начинается на символ "А".

7. Выяснить сколько раз встречается каждая буква алфавита в строке.

8. В строке заменить все пробелы, стоящие на четных позициях на двойные пробелы.

9. Определить на какую букву заканчивается третье слово в строке.

10. Определить длину последнего слова в строке.

 

 



Поделиться:


Последнее изменение этой страницы: 2020-11-28; просмотров: 176; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.221.239.148 (0.047 с.)