П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 4096 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 6757 раз(а).

Учебник HTML.
Просмотров 3717 раз(а).

Руководство по PHP5.
Просмотров 5991 раз(а).

Хостинг через призму DNS.
Просмотров 4809 раз(а).

Подборка текстов стандартных документов.
Просмотров 56244 раз(а).

Учебник PHP - Самоучитель
Просмотров 3702 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 8335 раз(а).

Внешние атаки...
Просмотров 4563 раз(а).

Учебник PHP.
Просмотров 3172 раз(а).

SSI в примерах.
Просмотров 175 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Глава 15: Другие операции преобразования данных.
15.2 Извлечение и замена подстроки

Извлечь фрагмент строки можно путем осторожного применения регулярних виражений, но если этот фрагмент всегда находится на известной позиции, такой метод неэффективен. В этом случае удобнее использовать функцию substr. эта функция принимает три аргумента: строковое значение, начальную позицию (определяемую так же, как в функции index) и длину, т.е.

$s = substr ($строка, $начало, $длина) ;

Начальная позиция определяется так же, как в функции index: первый символ — нуль, второй символ — единица и т.д. Длина — это число символов, которые необходимо извлечь, начиная от данной позиции: нулевая длина означает, что символы не извлекаются, единица означает получение первого символа, двойка — двух символов и т.д. (Больше символов, чем имеется в строке, извлечь нельзя, поэтому если вы запросите слишком много, ничего страшного не произойдет.) Выглядит это так:

$hello = "hello, world!";
$grab = substr($hello,3,2); # $grab получает "lo"
$grab = substr($hello,7,100); # 7 до конца, или "world!"

Можно даже выполнять подобным образом операцию "десять в степени n" для небольших целочисленньк степеней, например:

$big = substr("10000000000",0,$power+l); # 10 ** $power

Если количество символов равно нулю, то возвращается пустая строка. Если либо начальная, либо конечная позиция меньше нуля, то такая позиция отсчитывается на соответствующее число символов, начиная с конца строки. Так, начальная позиция -їй длина 1 (или более) дает последний символ. Аналогичным образом начальная позиция -2 отсчитывается от второго символа относительно конца строки:

$stuff = substr("a very long string",-3,3); # последние три символа 
$stuff = substr("a very long string",-3,1); # буква і

Если начальная позиция указана так, что находится "левее" начала строки (например, задана большим отрицательным числом, превышающим длину строки), то в качестве начальной позиции берется начало строки (как если бы вы указали начальную позицию 0). Если начальная позиция — большое положительное число, то всегда возвращается пустая строка. Другими словами, эта функция всегда возвращает нечто, отличное от сообщения об ошибке.

Отсутствие аргумента "длина" зквивалентно взятию в качестве этого аргумента большого числа — в этом случае извлекается все от выбранной позиции до конца строки*.

* В очень старых версиях Perl пропуск третього аргумента не допускался, поэтому первые Perl-программисты использовали в качестве этого аргумента большие числа. Вы, возможно, столкнетесь с этим в своих археологических исследованиях программ, написанньк Perl.

Если первый аргумент функции substr — скалярная переменная (другими словами, она может стоять в левой части операции присваивания), то сама эта функция может стоять в левой части операции присваивания. Если вы перешли к программированию на Perl из С, вам это может показаться странным, но для тех, кто когда-нибудь имел дело с некоторыми диалектами Basic, это вполне нормально. В результате такого присваивания изменяется та часть строки, которая была бы возвращена, будь substr использована не в левой, а в правой части выражения. Нопример, substr ($var,3,2) возвращает четвертый и пятый символы (начиная с 3 в количестве 2), поэтому присваивание изменяет указанные два символа в $var подобно тому, как это приведено ниже:

$hw = "hello world!";
substr($hw,0,5) = "howdy"; # $hw теперь равна "howdy world!"

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

$hw = "hello world!";
substr($hw, 0, 5) = "hi"; # $hw теперь равна "hi world!"

В следующем примере эта строка удлиняется:

$hw = "hello world!";
substr($hw, -б, 5) = "nationwide news"; # заменяет "world"

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

Назад | Вперед
Содержание (общее) | Содержание раздела



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru