logo
Vvedenie_v_Veb_programmirovanien_2 / Vvedenie_v_Veb_programmirovanien_2

Функции для работы со строками. Базовые строковые функции

Система PHP содержит большое число функций для работы со строками. Приведем некоторые из наиболее распространенных строковых функций: strlen($str) – возвращает длину строки, ltrim($str) – удаляет символы разделители типа пробела или табуляции в начале строки, rtrim($str) – удаляет символы разделители в конце строки, trim($str) - вырезает пустое пространство в начале и в конце строки. Рассмотрим пример:

<?php //str1.php

//Удаление лишних пробелов по-левому боку текста:<br />

$str=" –Текст слишними пробелами по бокам.- “;

$str=ltrim($str); //удаление пробелов слева<br />

echo "$str", strlen($str)," <br />";

$str=rtrim($str); //Удаление пробелов справа<br />

echo "$str"," <br />";

$str=" Еще Текст с пробелами по бокам ". $str=trim($str);//Удаление пробелов слева и справа <br />

echo "$str";

?>

Вывод:

-Текст с лишними пробелами по бокам.- 89 

-Текст с лишними пробелами по бокам.- 

Еще Текст с лишними пробелами по бокам -Текст с лишними пробелами по бокам.-

Функция strpos(string $where, string $what[,int $fromwhere =0])пытается найти в строке $where подстроку $what и в случае успеха возвращает позицию этой подстроки в строке. Необязательный параметр $fromwhere можно задавать, если поиск нужно вести не с начала строки $from, а с другой позиции. Если подстроку найти не удалось, функция возвращает false.

string substr (string $str, int $start [, int $length]) - возвращает часть строки $str, начиная с позиции $start и длиной $length. Если $length не задана, то возвращается подстрока от позиции $start до конца строки $str. Если $start больше длины строки, или же значение $length равно нулю, то возвращается пустая подстрока. Если в $start отрицательное число, то это число является индексом подстроки, отсчитываемым от конца $str.

string strstr (string $str, string $needl) - находит в строке $str первое вхождение строки $needl. Возвращает часть строки $str от первого вхождения $needle до конца. Если needl не найден, возвращает FALSE. Функция чувствительна к регистру символов. Для поиска без учёта регистра используется функция stristr(). Рассмотрим пример:

<?php //str2.php

echo strpos("Hello","el"),"<br/>"; // Выводит 1

echo strstr("Hello","el"),"<br/>";

// чтобы избежать проблем с определением типов используйте

//операторы тождественных сравнений (===) (!==)

if (strpos("Norway","rwa") !== false)

echo "Строка rwa есть в Norway","<br/>";

//Пример использования substr()

echo $rest = substr("abcdef", 1),"<br/>"; //возвращает "bcdef"

echo $rest = substr("abcdef", 0, 4),"<br/>";//возвращает "abcd"

$str = "Programmer";

echo substr($str,0,2),"<br/>"; // Выводит Pr

echo substr($str,-3,3),"<br/>"; // Выводит mer

//Пример strstr()

$email = 'user@example.com';

$domain = strstr($email, '@');

print "$domain, <br/>"; // печатает @example.com

?>

Вывод:

1

Ello

Строка rwa есть в Norway

Bcdef

Abcd

Pr

Mer

@example.com, 

Функция strcmp(string $str1, string $str2)

сравнивает две строки посимвольно и возвращает: 0, если строки совпадают; -1, если строка $str1 лексикографически меньше $str2; и 1, если, наоборот, $str1 "больше" $str2. Для функции strcmp() регистр символов влияет на результаты сравнений, для strcasecmp(string $str1, string $str2) регистр не учитывается.

Функция strspn( ) возвращает длину первого сегмента строки1, содержащего символы, присутствующие в строке2. Синтаксис функции strspn( ):

int strspn (string строка1, string строка2)

Следующий фрагмент показывает, как функция strspn( ) используется для проверки пароля. Здесь же сравниваются две одинаковые строки:

<? //Str13.php

$string1 = "butter";

$string2 = "Butter";

if ((strcmp($string1, $string2)) == 0)

print "Strings are equivalent!";

else

print "Strings are not equivalent!";

if ((strcasecmp($string1, $string2)) == 0)

print "Строки совпадают с точностью до регистра!";

$password = "12345";

if (strspn($password, "1234567890") ==strlen($password))

print "Password cannot consist solely of numbers!";

?>

Вывод:

Strings are not equivalent!

Строки совпадают с точностью до регистра!

Password cannot consist solely of numbers!

Функция strcspn( ) возвращает длину первого сегмента строки1, содержащего символы, отсутствующие в строке2. Синтаксис функции:

int strcspn (string строка1, string строка2);

str_replace(string $from, string $to, string $str)

Заменяет в строке $str все вхождения подстроки $from (с учетом регистра) на $to и возвращает результат. Исходная строка, переданная третьим параметром, при этом не меняется. Например, вот так мы можем заместить все символы перевода строки на их HTML эквивалент — тэг <br>:

$st=str_replace("\n","<br>\n",$str)

То, что в строке <br>\n тоже есть символ перевода строки, никак не влияет на работу функции, т. е. функция производит лишь однократный проход по строке.

string WordWrap(string $str, int $width=75, string $break="\n")

Функция разбивает блок текста $str на несколько строк, завершаемых символами $break, так, чтобы на одной строке было не более $width букв. Разбиение происходит по границе слова. Возвращается получившаяся строка с символами перевода строки, заданными в $break. Функция, оказывается полезной, например, при форматировании текста письма перед автоматической отправкой его адресату при помощи mail(). Пример использования:

<?php //str3.php

$str = "Это текст электронного письма, которое нужно отправить адресату ";

// Разбиваем текст по 20 символов

$str = WordWrap ($str, 30, "<br>");

echo $str;

?>

Вывод: Это текст электронного письма,

которое нужно отправить

адресату

string stripcslashes (string str) - возвращает строку с вырезанными обратными слэшами. Распознаёт C-подобные \n, \r.

strip_tags (string $str [, string $allowable_tags])

Эта функция удаляет из строки все тэги и возвращает результат. В параметре $allowable_tags перечисляться вплотную друг к другу тэги, которые не следует удалять из строки. Примеры:

<? //str4.php

$str="<b>жирный текст</b>";

echo "$str,<br/>";

$str=strip_tags($str);

echo "НЕ $str<br/>";

//Удаление всех тэгов, кроме <b> и <i>:

$str="<h1>большой текст</h1> <b><i>жирный текст</i></b>";

echo "$str <br/>";

$str=strip_tags($str,"<b><i>");

echo "$str,<br/>";

$strip = strip_tags ($str); // Удаляет все - теги из строки

echo "$strip<br/>";

?>

Вывод:

жирный текст, НЕ жирный текст

большой текст

жирный текст большой текст жирный текст, большой текст жирный текст