[Image] Четверг, 19.12.2024, 03:31 [Image]
SEO, технологии, игры, IT новости
[Image] Главная Регистрация Вход [Image]
[Image] Приветствую Вас, Гость · RSS [Image]
Меню сайта

Форма входа
 Блог
Главная » 2010 » Декабрь » 18 » Поиск и замена строк
19:55
Поиск и замена строк
Использование строк без представления о том, что в них содержится, немного похоже на ночную езду на автомобиле с выключенными фарами — вы знаете, что дорога должна быть где-то здесь, но не можете знать этого точно.
РНР предлагает широкий спектр функций для поиска и замены текста внутри строк с использованием как традиционного подхода "поиска и замены", так и специальной системы, известной под названием регулярных выражений, которая будет описана далее в этой книге.
Простейшая форма поиска состоит в нахождении подстроки в строке. Эта задача обычно выполняется вызовом функции strpos ($haystack, $needle [, $start]), которая возвращает false, если $needle не может быть найдено в $haystack; в противном случае функция возвращает позицию первого символа $needle внутри $haystack.
Если указан целочисленный параметр $ s t a r t , операция поиска выполняется, начиная с символа $haystack, положение которого соответствует $start.
Например, следующий сценарий возвращает "Строка найдена в позиции 24":
$haystack = 'Трое в лодке, не считая собаки1;
$pos = strpos ($haystack, 'собаки');
if ($pos === false)
echo "Строка не найдена\п";
else
echo "Строка найдена в позиции $pos\n";
?>
Имеется одна очень существенная деталь, которую следует отметить о приведенном выше сценарии. Чтобы определить, был ли вызов strpos () успешным и вхождение подстроки 'собаки' присутствует внутри $haystack, значение $pos сравнивается с false с помощью операции проверки равенства с контролем типов ===. Причина этого состоит в том, что булевское значение false равно целочисленному нулю. Однако strpos () возвратит ноль, если искомый фрагмент $needle будет найден, начиная с первого символа $haystack. Таким образом, проверка значения, возвращаемого strpos () с помощью выражения вроде:
if (!strpos ($haystack, $needle))
die ("Сбой");
может привести к неожиданной проблеме. Например, следующий сценарий неверно выдаст, что строка ' Трое' не может быть найдена внутри строки ' Трое в лодке':
$haystack = 'Трое в лодке';
$pos = strpos ($haystack, 'Трое');
if (!$pos)
echo "Строка не найдена\п";
else
echo "Строка найдена в позиции $pos\n";
?>
Несмотря на то, что strpos О выполняет поиск слева направо, можно начать поиск с конца строки и двигаться к началу с помощью функции strrpos (). В отличие от strpos (), однако, strrpos () может искать только один символ. Если вы укажете строку с более чем одним символом в параметре $needle, будет принят во внимание только первый символ.
Как и можно было представить, strpos () является функцией, чувствительной к регистру, а поэтому, например, не найдет слово ' трое' в предыдущем примере.
Интересно, что не существует нечувствительной к регистру альтернативы strpos ().
Однако, в РНР определена функция s t r s t r (), которая похожа на strpos () и имеет нечувствительной к регистру аналог по имени s t r i s t r ().
В отличие от strpos (), s t r s t r () возвращает часть $haystack, которая начинается с $needle. Следующий сценарий, например, вернет'Найдена строка: в лодке':
$haystack = 'Трое в лодке';
$pos = strstr ($haystack, 'в лодке1);
if (!$pos)
echo "Строка не найдена\п";
else
echo "Найдена строка: $pos\n";
?>

Категория: Все о PHP | Просмотров: 1431 | Добавил: witkom8382 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright MyCorp © 2024
Категории
Оптимизация сайта [592]
Создание сайтов [355]
Заработать в интернете [508]
Технологии [48]
Полезное [392]
Услуги и сервисы [317]
Автоблог [105]
Скрипты для Ucoz [39]
Движок на сайт [10]
Все о Joomla и Drupal [20]
Все о PHP [91]
Поиск
Пользовательский поиск
Статистика


Онлайн всего: 3
Гостей: 3
Пользователей: 0
Seo сайт, технологии продвижения, мета теги, оптимизация сайтов, новости сео, Скрипты, Ucoz

Рейтинг@Mail.ru