KnigaRead.com/

Нина Савельева - Курс "Язык программирования PHP"

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Нина Савельева, "Курс "Язык программирования PHP"" бесплатно, без регистрации.
Перейти на страницу:

И кроме того, можно вводить символы кавычек

без их экранирования обратным слэшем.

EOT;

?>



Уже не раз, начиная с самой первой лекции, мы использовали функцию echo. На самом деле, echo – не функция, а языковая конструкция, поэтому использовать при ее вызове круглые скобки не обязательно. Echo позволяет выводить на экран строки, переданные ей в качестве параметров. Параметров у echo может быть сколько угодно. Их разделяют запятыми или объединяют с помощью оператора конкатенации и никогда не заключают в круглые скобки.


<?

echo "Пришел ", "увидел ", "победил ";

// выведет строку "Пришел увидел победил"

// многие предпочитают передавать несколько

// параметров в echo с помощью конкатенации

echo "Пришел " . "увидел " . "победил ";

// тоже выведет строку

// "Пришел увидел победил"

echo ("Пришел ", "увидел ", "победил ");

// выдаст ошибку: unexpected ','

?>



Существует сокращенный синтаксис для команды echo:


<?=строка_для_вывода?>


Здесь параметр строка_для вывода содержит строку, заданную любым из известных способов, которая должна быть выведена на экран.


Например, такой скрипт выведет на экран красным цветом "Меня зовут Вася":


<? $name="Вася" ?>

<font color=red>Меня зовут <?=$name?></font>



Кроме языковой конструкции echo существует ряд функций для вывода строк. Это в первую очередь функция print и ее разновидности printf, sprintf и т.п.


Функция print позволяет выводить на экран только одну строку и, как и echo, не может быть вызвана с помощью переменных функций, поскольку является языковой конструкцией.


Функция print_r не относится к строковым функциям, как можно было бы подумать. Она отображает информацию о переменной в форме, понятной пользователю.


Функции sprintf и printf обрабатывают переданную им строку в соответствии с заданным форматом. Но о них мы говорить не будем. А поговорим о том, как можно осуществлять поиск в тексте, представленном в виде строки.


Поиск элемента в строке


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


strpos (исходная строка,строка для поиска

[,с какого символа искать])


Она возвращает позицию появления искомой строки в исходной строке или возвращает логическое false, если вхождение не найдено. Дополнительный аргумент позволяет задавать символ, начиная с которого будет производиться поиск. Кроме логического false эта функция может возвращать и другие значения, которые приводятся к false (например, 0 или ""). Поэтому для того, чтобы проверить, найдена ли искомая строка, рекомендуют использовать оператор эквивалентности «===».


<?

$str = "Идея наносить данные на перфокарты

и затем считывать и обрабатывать их

автоматически принадлежала Джону Биллингсу,

а ее техническое решение осуществил Герман

Холлерит. Перфокарта Холлерита оказалась

настолько удачной, что без малейших изменений

просуществовала до наших дней.";

$pos = strpos($str,"Холлерит");

if ($pos !== false) echo "Искомая строка

встречена в позиции номер $pos ";

else echo "Искомая строка не найдена";

/* заметим, что мы проверяем значение

$pos на эквивалентность с false.

Иначе строка, находящаяся в первой позиции,

не была бы найдена, так как 0

интерпретируется как false. */

?>



Если значение параметра строка_для_поиска не является строкой, то оно преобразуется к целому типу и рассматривается как ASCII-код символа. Чтобы получить ASCII-код любого символа в PHP, можно воспользоваться функцией ord("символ")


Например, если мы напишем $pos = strpos($str,228); то интерпретатор будет считать, что мы ищем символ «д». Если добавить эту строчку в приведенный выше пример и вывести результат, то получим сообщение, что искомая строка найдена в позиции 1.


Функция, обратная по смыслу ord, – это chr (код символа). Она по ASCII-коду выводит символ, соответствующий этому коду.


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


strrpos (исходная строка, символ для поиска)


В отличие от strpos() эта функция позволяет найти позицию последнего появления в строке указанного символа. Нельзя искать позицию строки, только символа.


Бывают ситуации, когда знать позицию, где находится искомая строка, необязательно, а нужно просто получить все символы, которые расположены после вхождения этой строки. Можно, конечно, воспользоваться и приведенными выше функциями strpos() и strrpos(), но можно сделать и проще – выделить подстроку с помощью предназначенных именно для этого функций.


Выделение подстроки


Функция strstr


Говоря о выделении подстроки из искомой строки в языке PHP, в первую очередь стоит отметить функцию strstr():


strstr (исходная строка, строка для поиска)


Она находит первое появление искомой строки и возвращает подстроку, начиная с этой искомой строки до конца исходной строки.


Если строка для поиска не найдена, то функция вернет false. Если строка для поиска не принадлежит строковому типу данных, то она переводится в целое число и рассматривается как код символа. Кроме того, эта функция чувствительна к регистру, т.е. если мы будем параллельно искать вхождения слов «Идея» и «идея», то результаты будут разными. Вместо strstr() можно использовать абсолютно идентичную ей функцию strchr().


Пример 8.4. Выделим из строки, содержащей название и автора исследования, подстроку, начинающуюся со слова «Название»:


<?

$str = "Автор: Иванов Иван (<a

href=mailto: [email protected]>написать письмо</a>),

Название: 'Исследование языков

программирования' ";

echo "<b>Исходная строка: </b>",$str;

if (!strstr($str, "Название"))

echo "Строка не найдена<br>";

else echo "

<b>Полученная подстрока: </b>",

strstr($str, "Название");

?>



В результате получим:


Исходная строка: Автор: Иванов Иван

(написать письмо),

Название: 'Исследование языков

программирования'

Полученная подстрока: Название:

'Исследование языков программирования'



Для реализации регистронезависимого поиска подстроки существует соответствующий аналог этой функции – функция stristr (исходная строка, искомая строка). Действует и используется она точно так же, как и strstr(), за исключением того, что регистр, в котором записаны символы искомой строки, не играет роли при поиске.


Очевидно, что функция strstr() не слишком часто используется – на практике редко бывает нужно получить подстроку, начинающуюся с определенного слова или строки. Но в некоторых случаях и она может пригодиться. Кроме того, в PHP есть и более удобные функции для поиска вхождений. Наиболее мощные из них, конечно, связаны с регулярными выражениями. Их мы рассмотрим в одной из последующих лекций.


Функция substr


Иногда мы не знаем, с каких символов начинается искомая строка, но знаем, например, что начинается она с пятого символа и заканчивается за два символа до конца исходной строки. Как выделить подстроку по такому описанию? Очень просто, с помощью функции substr(). Ее синтаксис можно записать следующим образом:


substr (исходная строка,

позиция начального символа [, длина])


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


Пример 8.5. Допустим, у нас есть фраза, выделенная жирным шрифтом с помощью тега <b> языка HTML. Мы хотим получить эту же фразу, но в обычном стиле. Напишем такую программу:

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*