Иногда мы не знаем, с каких символов начинается искомая строка, но знаем, например, что начинается она с пятого символа и заканчивается за два символа до конца исходной строки. Как выделить подстроку по такому описанию? Очень просто, с помощью функции substr(). Ее синтаксис можно записать следующим образом:
substr (исходная строка, позиция начального символа [, длина])
Эта функция возвращает часть строки длиной, заданной параметром длина, начиная с символа, указанного параметром позиция начального символа. Позиция, с которой начинается выделяемая подстрока, может быть как положительным целым числом, так и отрицательным. В последнем случае отсчет элементов производится с конца строки. Если параметр длина опущен, то substr() возвращает подстроку от указанного символа и до конца исходной строки. Длина выделяемой подстроки тоже может быть задана отрицательным числом. Это означает, что указанное число символов отбрасывается с конца строки.
Пример 8.5. Допустим, у нас есть фраза, выделенная жирным шрифтом с помощью тега <b> языка HTML. Мы хотим получить эту же фразу, но в обычном стиле. Напишем такую программу:
<?php $word = "<b>Hello, world!</b>"; echo $word , "<br>"; $pure_str = substr($word, 3, -4); /* выделяем подстроку, начиная с 3-го символа, не включая 4 символа с конца строки */ echo $pure_str; ?>
Пример 8.5. Использование функции substr() (html, txt)
В результате работы этого скрипта получим:
Hello, world! Hello, world!
На самом деле решить такую задачу можно гораздо проще, с помощью функции strip_tags:
strip_tags (строка [, допустимые теги])
Эта функция возвращает строку, из которой удалены все html и php-теги. С помощью дополнительного аргумента можно задать теги, которые не будут удалены из строки. Список из нескольких тегов вводится без каких-либо знаков разделителей. Функция выдает предупреждение, если встречает неправильные или неполные теги.
<?php $string = "<b>Bold text</b> <i>Italic text</i>"; $str = strip_tags($string); // удаляем все теги из строки $str1 = strip_tags($string, '<i>'); // удаляем все теги кроме тега <i> $str2 = strip_tags($string, '<i><b>'); // удаляем все теги кроме тегов <i> и <b> echo $str,"<br>",$str1,"<br>", $str2; ?>