Привет, Гость!
Учебник PHP #8
для всего регулярного выражения, второй элемент (с индексом 1) содержит массив всех совпадений для первого подвыражения в круглых скобках и т. д.;
PREG_SET_ORDER — порядок сортировки массива несколько отличается от принятого по умолчанию. Первый элемент (с индексом 0) содержит массив с текстом, совпавшим со всеми подвыражениями в круглых скобках для первого найденного совпадения. Второй элемент (с индексом 1) содержит аналогичный массив для второго найденного совпадения и т. д.
Следующий пример показывает, как при помощи функции preg_match_al( ) найти весь текст, заключенный между тегами HTML <b>...</b>:
$user_info = "Name: <b>Rasmus Lerdorf</b> <br> Title: <b>PHP Guru</b>";
preg_match_all ("/<b>(.*)<\/b>/U", Suserinfo. $pat_array);
print $pat_array[0][0]." <br> ".pat_array[0][l]."\n":
Результат:
Rasmus Lerdorf
PHP Guru
preg_replace( )
Функция preg_repl ace( ) работает точно так же, как и ereg_replасе( ), за одним исключением — регулярные выражения могут использоваться в обоих параметрах, шаблон и замена. Синтаксис функции preg_replace( ):
mixed preg_replace (mixed шаблон, mixed замена, mixed строка [, int порог])
Необязательный параметр порог определяет максимальное количество замен в строке. Интересный факт: параметры шаблон и замена могут представлять собой масивы. Функция preg_replace( ) перебирает элементы обоих массивов и выполняет замену по мере их нахождения.
preg_split( )
Функция preg_spl it( ) аналогична split( ) за одним исключением — параметр шаблон может содержать регулярное выражение. Синтаксис функции preg_split( ):
array preg_split (string шаблон, string строка [, int порог [, int флаги]])
Необязательный параметр порог определяет максимальное количество элементов, на которые делится строка. В следующем примере функция preg_split( ) используется для выборки информации из переменной.
$user_info="+wj+++Gilmore+++++wjgi]more@hotmail.com
+++++++Columbus+++OH";
$fields = preg_split("/\+{1.}/", $user_info);
while ($x < sizeof($fields)):
print $fields[$x]. "<br>";
$x++;
endwhile;
Результат:
WJ
Gilmore
wjgilmore@hotmail.com
Columbus
OH
preg_grep( )
Функция preg_grep( ) перебирает все элементы заданного массива и возвращает все элементы, в которых совпадает заданное регулярное выражение. Синтаксис функции preg_grep():
array preg_grep (string шаблон, array массив)
Пример использования функции preg_grep( ) для поиска в массиве слов, начинающихся на р:
$foods = array ("pasta", "steak", "fish", "potatoes");
// Поиск элементов, начинающихся с символа "р".
// за которым следует один или несколько символов
$p_foods = preg_grep("/p(\w+)/", $foods):
$х = 0;
while ($x < sizeof($p_foods)) :
print $p_foods[$x]. "<br>";
$Х++;
endwhile;
Результат:
pasta
potatoes
Другие строковые функции
Кроме функций для работы с регулярными выражениями, описанными в первой части этой главы, в РНР существует более 70 функций для выполнения практически всех мыслимых операций со строками. Подробное перечисление и описание всех функций выходит за рамки этой книги и приведет к обычному повторению информации, приведенной в документации РНР. По этой причине я превратил оставшуюся часть главы в своего рода список FAQ из вопросов, часто встречающихся во многих электронных конференциях РНР и на многих сайтах этой тематики. На мой взгляд, этот способ позволяет гораздо эффективнее описать общие принципы громадной библиотеки строковых функций РНР.
Дополнение и сжатие строк
В процессе форматирования часто возникает необходимость в изменении длины строки посредством дополнения или удаления символов. В РНР существует несколько функций, предназначенных для решения этой задачи.
chop ( )
Функция chop( ) возвращает строку после удаления из нее завершающих пропусков и символов новой строки. Синтаксис функции chop( ):
string chop(string строка)
В следующем примере функция chop( ) удаляет лишние символы новой строки:
$header = "Table of Contents\n\n";
$header = chop($header);
// $header = "Table of Contents"
str_pad( )
Функция str_pad( ) выравнивает строку до определенной длины заданными символами и возвращает отформатированную строку. Синтаксис функции str_pad( ):
string str_pad (string строка, int длина_дополнения [, string дополнение [, int тип_дополнения]])
Если необязательный параметр дополнение не указан, строка дополняется пробелами. В противном случае строка дополняется заданными символами. По умолчанию строка дополняется справа; тем не менее, вы можете передать в параметре тип_дополнения константу STR_PAD_RIGHT, STR_PAD_LEFT или STR_PAD_BOTH, что приведет к дополнению строки в заданном направлении. Пример демонстрирует дополнение строки функцией str_pad( ) с параметрами по умолчанию:
$food = "salad";
print str_pad ($food, 5): // Выводит строку "salad
В следующем примере используются необязательные параметры функции str_pad( ):
$header = "Table of Contents";
print str_pad ($header, 5, "=+=+=", STR_PAD_BOTH);
// В браузере выводится строка =+=+= Таbе of Contents=+=+="
trim ( )
Функция trim( ) удаляет псе пропуски с обоих краев строки и возвращает полученную строку. Синтаксис функции trim( ):
string trim (string страна]
К числу удаляемых пропусков относятся и специальные символы \n, \r, \t, \v и \0.
ltrim( )
Функция lrim( ) удаляет все пропуски и специальные символы с левого края строки и возвращает полученную строку. Синтаксис функции ltrim( ):
string ltrim (string строка)
Функция удаляет те же специальные символы, что и функция trim( ).
Определение длины строки
Длину строки в символах можно определить при помощи функции strlen( ). Синтаксис .функции strlen( ):
int strlen (string строка)
Следующий пример демонстрирует определение длины строки функцией strlen( ):
$string = "hello";
$length = strlen($string);
// $length = 5
Сравнение двух строк
Сравнение двух строк принадлежит к числу важнейших строковых операций любого языка. Хотя эту задачу можно решить несколькими разными способами, в РНР существуют четыре функции сравнения строк:
strcmp( );
strcasecmp( );
strspn( );
strcspn( ).
Все эти функции подробно описаны в следующих разделах.
strcmp( )
Функция strcmp( ) сравнивает две строки с учетом регистра символов. Синтаксис функции strcmp( ):
int strcmp (string строка1, string строка2)
После завершения сравнения strcmp( ) возвращает одно из трех возможных значений:
0, если строка1 и строка2 совпадают;
< 0, если строка1 меньше, чем строка2;
> 0, если строка2 меньше, чем строка1.
В следующем фрагменте сравниваются две одинаковые строки:
$sthng1 = "butter";
$string2 = "butter";
if ((strcmp($string1. $string2)) == 0) :
print "Strings are equivalent!"; endif;
// Команда if возвращает TRUE
strcasecmp( )
Функция strcasecmp( ) работает точно так же, как strcmp( ), за одним исключением — регистр
PREG_SET_ORDER — порядок сортировки массива несколько отличается от принятого по умолчанию. Первый элемент (с индексом 0) содержит массив с текстом, совпавшим со всеми подвыражениями в круглых скобках для первого найденного совпадения. Второй элемент (с индексом 1) содержит аналогичный массив для второго найденного совпадения и т. д.
Следующий пример показывает, как при помощи функции preg_match_al( ) найти весь текст, заключенный между тегами HTML <b>...</b>:
$user_info = "Name: <b>Rasmus Lerdorf</b> <br> Title: <b>PHP Guru</b>";
preg_match_all ("/<b>(.*)<\/b>/U", Suserinfo. $pat_array);
print $pat_array[0][0]." <br> ".pat_array[0][l]."\n":
Результат:
Rasmus Lerdorf
PHP Guru
preg_replace( )
Функция preg_repl ace( ) работает точно так же, как и ereg_replасе( ), за одним исключением — регулярные выражения могут использоваться в обоих параметрах, шаблон и замена. Синтаксис функции preg_replace( ):
mixed preg_replace (mixed шаблон, mixed замена, mixed строка [, int порог])
Необязательный параметр порог определяет максимальное количество замен в строке. Интересный факт: параметры шаблон и замена могут представлять собой масивы. Функция preg_replace( ) перебирает элементы обоих массивов и выполняет замену по мере их нахождения.
preg_split( )
Функция preg_spl it( ) аналогична split( ) за одним исключением — параметр шаблон может содержать регулярное выражение. Синтаксис функции preg_split( ):
array preg_split (string шаблон, string строка [, int порог [, int флаги]])
Необязательный параметр порог определяет максимальное количество элементов, на которые делится строка. В следующем примере функция preg_split( ) используется для выборки информации из переменной.
$user_info="+wj+++Gilmore+++++wjgi]more@hotmail.com
+++++++Columbus+++OH";
$fields = preg_split("/\+{1.}/", $user_info);
while ($x < sizeof($fields)):
print $fields[$x]. "<br>";
$x++;
endwhile;
Результат:
WJ
Gilmore
wjgilmore@hotmail.com
Columbus
OH
preg_grep( )
Функция preg_grep( ) перебирает все элементы заданного массива и возвращает все элементы, в которых совпадает заданное регулярное выражение. Синтаксис функции preg_grep():
array preg_grep (string шаблон, array массив)
Пример использования функции preg_grep( ) для поиска в массиве слов, начинающихся на р:
$foods = array ("pasta", "steak", "fish", "potatoes");
// Поиск элементов, начинающихся с символа "р".
// за которым следует один или несколько символов
$p_foods = preg_grep("/p(\w+)/", $foods):
$х = 0;
while ($x < sizeof($p_foods)) :
print $p_foods[$x]. "<br>";
$Х++;
endwhile;
Результат:
pasta
potatoes
Другие строковые функции
Кроме функций для работы с регулярными выражениями, описанными в первой части этой главы, в РНР существует более 70 функций для выполнения практически всех мыслимых операций со строками. Подробное перечисление и описание всех функций выходит за рамки этой книги и приведет к обычному повторению информации, приведенной в документации РНР. По этой причине я превратил оставшуюся часть главы в своего рода список FAQ из вопросов, часто встречающихся во многих электронных конференциях РНР и на многих сайтах этой тематики. На мой взгляд, этот способ позволяет гораздо эффективнее описать общие принципы громадной библиотеки строковых функций РНР.
Дополнение и сжатие строк
В процессе форматирования часто возникает необходимость в изменении длины строки посредством дополнения или удаления символов. В РНР существует несколько функций, предназначенных для решения этой задачи.
chop ( )
Функция chop( ) возвращает строку после удаления из нее завершающих пропусков и символов новой строки. Синтаксис функции chop( ):
string chop(string строка)
В следующем примере функция chop( ) удаляет лишние символы новой строки:
$header = "Table of Contents\n\n";
$header = chop($header);
// $header = "Table of Contents"
str_pad( )
Функция str_pad( ) выравнивает строку до определенной длины заданными символами и возвращает отформатированную строку. Синтаксис функции str_pad( ):
string str_pad (string строка, int длина_дополнения [, string дополнение [, int тип_дополнения]])
Если необязательный параметр дополнение не указан, строка дополняется пробелами. В противном случае строка дополняется заданными символами. По умолчанию строка дополняется справа; тем не менее, вы можете передать в параметре тип_дополнения константу STR_PAD_RIGHT, STR_PAD_LEFT или STR_PAD_BOTH, что приведет к дополнению строки в заданном направлении. Пример демонстрирует дополнение строки функцией str_pad( ) с параметрами по умолчанию:
$food = "salad";
print str_pad ($food, 5): // Выводит строку "salad
В следующем примере используются необязательные параметры функции str_pad( ):
$header = "Table of Contents";
print str_pad ($header, 5, "=+=+=", STR_PAD_BOTH);
// В браузере выводится строка =+=+= Таbе of Contents=+=+="
trim ( )
Функция trim( ) удаляет псе пропуски с обоих краев строки и возвращает полученную строку. Синтаксис функции trim( ):
string trim (string страна]
К числу удаляемых пропусков относятся и специальные символы \n, \r, \t, \v и \0.
ltrim( )
Функция lrim( ) удаляет все пропуски и специальные символы с левого края строки и возвращает полученную строку. Синтаксис функции ltrim( ):
string ltrim (string строка)
Функция удаляет те же специальные символы, что и функция trim( ).
Определение длины строки
Длину строки в символах можно определить при помощи функции strlen( ). Синтаксис .функции strlen( ):
int strlen (string строка)
Следующий пример демонстрирует определение длины строки функцией strlen( ):
$string = "hello";
$length = strlen($string);
// $length = 5
Сравнение двух строк
Сравнение двух строк принадлежит к числу важнейших строковых операций любого языка. Хотя эту задачу можно решить несколькими разными способами, в РНР существуют четыре функции сравнения строк:
strcmp( );
strcasecmp( );
strspn( );
strcspn( ).
Все эти функции подробно описаны в следующих разделах.
strcmp( )
Функция strcmp( ) сравнивает две строки с учетом регистра символов. Синтаксис функции strcmp( ):
int strcmp (string строка1, string строка2)
После завершения сравнения strcmp( ) возвращает одно из трех возможных значений:
0, если строка1 и строка2 совпадают;
< 0, если строка1 меньше, чем строка2;
> 0, если строка2 меньше, чем строка1.
В следующем фрагменте сравниваются две одинаковые строки:
$sthng1 = "butter";
$string2 = "butter";
if ((strcmp($string1. $string2)) == 0) :
print "Strings are equivalent!"; endif;
// Команда if возвращает TRUE
strcasecmp( )
Функция strcasecmp( ) работает точно так же, как strcmp( ), за одним исключением — регистр
Комментарии (0)
Скачать Java книгу»php/mysql/pdo/js
В библиотеку