Поиск и замена строк в PHP

РНР предлагает широкий спектр функций для поиска и замены текста внутри строк с использованием как традиционного подхода “поиска и замены”, так и специальной системы, известной под названием регулярных выражений, которая будет описана далее в этой книге.

Простейшая форма поиска состоит в нахождении подстроки в строке. Эта задача обычно выполняется вызовом функции strpos (Shaystack, Sneedle [, SstartJ), которая возвращает false, если Sneedle не может быть найдено в Shaystack; в противном случае функция возвращает позицию первого символа Sneedle внутри Shaystack. Если указан целочисленный параметр Sstart, операция поиска выполняется, начиная с символа Shaystack, положение которого соответствует Sstart.

Например, следующий сценарий возвращает “Строка найдена в позиции 24″:__Основы разработки на РНР ^

<? Php

Shaystack = ‘Трое в лодке, не считая собаки’;

Spos = strpos (Shaystack, ‘собаки’);

if (Spos === false)

echo “Строка не найдена\п”;

else

echo “Строка найдена в позиции Spos\n”;

?>

Чтобы определить, был ли вызов strpos () успешным и вхождение подстроки ‘собаки’ присутствует внутри Shaystack, значение Spos сравнивается с false с помощью операции проверки равенства с контролем типов ===. Причина этого состоит в том, что булевское значение false равно целочисленному нулю. Однако strpos () возвратит ноль, если искомый фрагмент Sneedle будет найден, начиная с первого символа.

Shaystack = ‘Трое в лодке’;

Spos ■ strpos (Shaystack, ‘Трое’);

if (!Spos)

echo “Строка не найдена\п”; else

echo “Строка найдена в позиции SposSn”;

Несмотря на то, что strpos () выполняет поиск слева направо, можно начать поиск с конца строки и двигаться к началу с помощью функции strrpos (). В отличие от strpos (), однако, strrpos () может искать только один символ. Если вы укажете строку с более чем одним символом в параметре Sneedle, будет принят во внимание только первый символ.

strpos () является функцией, чувствительной к регистру, а поэтому, например, не найдет слово ‘ трое’ в предыдущем примере.

В отличие от strpos (),strstr О возвращает часть Shaystack, которая начинается с Sneedle

Замена строк

РНР предлагает две основных функции для выполнения простых операций поиска и замены. Первая из них — substr_replace () — может использоваться в случае, когда вам известно положение подстроки, которая должна быть заменена, и ее длина. Например:

Shaystack = ‘Трое в лодке’;

$newstr = substr_replace (Shaystack, ‘яхте1, 7, 5); echo “$newstr\n”;

Этот сценарии вернет ‘ Трое в яхте’. Функция substr_replace () работает, вырезая подстроку из Shaystack, начиная с позиции, указанной в третьем параметре и не обязательной длиной, заданной в четвертом параметре, а затем заменяет ее строкой, переданной во втором параметре.

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

Синтаксис str_replace () выглядит следующим образом:

str_replace (Ssearch, Sreplace, Ssubject)

Функция находит все вхождения строки Ssearch внутри Ssubject и заменяет их строкой Sreplace.

Ниже представлен пример, который возвращает ‘ Трое в яхте1:

Shaystack = ‘Трое в лодке’;

Snewstr = str_replace (’лодке’, ‘яхте’, Shaystack); echo “$newstr\n”;


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: