Сделай Сам Свою Работу на 5

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





 

Str_repeat()

 

string str_repeat(string str, int number)

 

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

 

<?

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 указывать не надо, иначе будет возвращаться первая часть строки.

 

Пример (4.7.8.4.1):

 

<?

$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()



 

array explode ( string separator, string string [, int limit] )

 

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

Если separator - пустая строка (""), explode() возвращает FALSE. Если separator не содержится в string, то explode() возвращает массив, содержащий один элемент string.

По историческим причинам, функции implode() можно передавать аргументы в любом порядке, но для explode() это недопустимо. separator всегда должен содержать разделитель, а string - исходную строку.

 

Пример (4.7.8.5.1):

 

<?

$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 glue, array pieces )

 

Возвращает строку, полученную объединением строковых представлений элементов массива pieces, со вставкой строки glue между соседними элементами.

 

Пример (4.7.8.6.1):

 

<?

$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);

?>

 

Результат: one two three four five

 

Join()

 

string join(string var, array param)

 

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

 

 

Сравнение строк

 

Strcmp()

 

int strcmp(string str1, string str2)

 

Сравнивает две строки и возвращает:

 

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

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

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

 

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



 

Пример (4.7.9.1.1):

 

<?

$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));

?>

 

Результат:

 

Result of strcmp (ttt , tttttttttt) is -1

Result of strcmp (tttttttttt, ttt) is 1

Result of strcmp (ttt, ttt) is 0

 

 

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)

 

Сравнивает начала строк без учета регистра.

 

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.

 

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. Третий необязательный параметр передается по ссылке и в нем сохраняется процент совпадения строк.

Вместо стека, как в алгоритме Оливера, эта функция использует рекурсивные вызовы. Сложность алгоритма этой функции равна O((max(n,m))3), что делает эту функцию медленной. (Грубо говоря, скорость выполнения этой функции пропорциональна N3, где N – длина наибольшей строки.

 

Пример 4.7.9.7.1:

 

<?

$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

?>

 

Результат:

 

Результат выполнения функции similar_text() для строк Hello, world! и Hello! в количестве символов: 6

и в процентах: 63.157894736842

 

Levenshtein()

 

Выполняет определение различия Левенштейна двух строк.

 

int levenshtein(string str1, string str2)

 

int levenshtein(string str1, string str2, int cost_ins, int cost_rep, int cost_del)

 

int levenshtein(string str1, string str2, function cost)

 

Под понятием "различие Левенштейна" понимается минимальное число символов, которое требовалось бы заменить, вставить или удалить для того, чтобы превратить строку str1 в str2. Сложность алгоритма этой функции равна O(m*n), т.е. пропорциональна произведению длин строк str1 и str2, поэтому эта функция намного более быстрая, чем функция similar_text(). У функции три вида синтаксиса. В первом случае функция возвращает число необходимых операций над символами строк для преобразования str1 в str2 (пример 4.7.9.8.1):

 

<?

$str1 = "Hello, world!";

$str2 = "Hello!";

$var = levenshtein($str1,$str2);

echo($var); // вернет 7

?>

 

Во втором случае добавляется три дополнительных параметра: стоимость операции вставки cost_ins, замены cost_rep и удаления cost_del. Естественно, функция в этом случае становится менее быстродействующей. Возвращается интегральный показатель сложности трансформации (ИПСТ). Пример 4.7.9.8.2:

 

<?

$str1 = "Hello, world!";

$str2 = "Hello!";

$var = levenshtein($str1,$str2,3,3,3);

echo($var); // вернет 21

?>

 

ИПСТ равен произведению количества символов, необходимых для замены (в предыдущем примере их надо 7) на стоимость, в этом случае, одной из операций. В этом примере, поскольку стоимость одинакова, не имеет значения, какую операцию брать. В случае, если стоимости различны, при вычисления ИПСТ берется наибольший. Т.е., если мы напишем в этом примере

 

$var = levenshtein($str1, str2 ,2,3,6);

 

то функция вернет нам значение 42.

 

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

 

 

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

 

Parse_url()

 

array parse_url(string url)

 

Обрабатывает URL и возвращает его компоненты.

 

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

 

Пример 4.7.10.1.1:

 

<?

$url = 'http://username:password@hostname/path?arg=value#anchor';

print_r(parse_url($url));

?>

 

Результат выполнения данного примера:

 

Array

(

[scheme] => http

[host] => hostname

[user] => username

[pass] => password

[path] => /path

[query] => arg=value

[fragment] => anchor

)

 

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(), но не воспринимает "+" как пробел.

 

Пример 4.7.10.4.1:

 

<?

$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);

?>

 

Результат:

 

исходная строка: http://www.google.com.ru/search?hl=ru&ie=UTF-8&oe=UTF-8&q=софттайм&lr=

 

закодировали: http%3A%2F%2Fwww.google.com.ru%2Fsearch%3Fhl%3Dru%26ie%3DUTF-8%26oe%3DUTF-8%26q%3D%F1%EE%F4%F2%F2%E0%E9%EC%26lr%3D

 

и раскодировали: http://www.google.com.ru/search?hl=ru&ie=UTF-8&oe=UTF-8&q=софттайм&lr=

 

Base64_encode()

 

Кодирует данные в кодировке MIME base64.

 

string base64_encode(string data)

 

Функция base64_encode() возвращает строку, переданную в параметре data в кодировке MIME base64.

Кодировка MIME base64 разработана для передачи двоичных данных через транспортные слои, которые не содержат восьмой бит, к примеру, как почтовые тела. Данные в кодировке Base64 занимают примерно на 30% больше места, чем оригинал.

 

Base64_decode()

 

Декодирует данные, закодированные в кодировке MIME base64.

 

string base64_decode(string encoded_data)

 

Функция base64_decode() декодирует encoded_data и возвращает оригинал данных.

 

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.