Если для компьютера строки — это не более чем коллекция символов, то для человека они часто представляют концепции и данные, которые должны следовать определенным соглашениям. И даже когда вы имеете дело с компьютерами, все равно иногда необходимо гарантировать, чтобы содержимое строк следовало определенным правилам.
РНР предлагает две основных функции для выполнения простых операций поиска и замены. Первая из них — substr_replace () — может использоваться в случае, когда вам известно положение подстроки, которая должна быть заменена, и ее длина.
Использование строк без представления о том, что в них содержится, немного похоже на ночную езду на автомобиле с выключенными фарами — вы знаете, что дорога должна быть где-то здесь, но не можете знать этого точно.
РНР предлагает широкий спектр функций для поиска и замены текста внутри строк с использованием как традиционного подхода "поиска и замены", так и специальной системы, известной под названием регулярных выражений, которая будет описана далее в этой книге.
Другие функции сравнения работают с целыми фразами. Например, функция levenshteinO вычисляет "расстояние" между двумя фразами, определяя минимальное число дополнений, удалений и замен, необходимых для трансформации одной строки в другую:
Довольно трудно научить компьютер "понимать" строки так же, как это делает человек. Типичный пример этой проблемы — ошибки правописания, в частности, когда вы имеете дело с именами.
Определение отношений между двумя строками не так очевидно, как те же операции с числами. Главная проблема заключается в контексте. Если вы сравниваете строки в двоичной форме, то два слова "Macro" и "macro" будут полностью различны, поскольку байтовое значение символа "М", как и должно быть, отличается от значения символа "т".
Три строковых нотации, которые были рассмотрены до сих пор, представляют различный уровень производительности. Несмотря на невысокую вероятность того, что производительность вашего приложения снизится из-за строковых выражений, вы можете столкнуться с другими
Как и большинство других языков, РНР определяет строки как последовательности символов. Важно понимать, что понятие "символа" не ограничено только теми символами, которыми люди пользуются каждый день, — буквами алфавита, десятичными цифрами и знаками пунктуации. Смысл, ассоциируемый с понятием "символ", означает только один байт данных.
Ссылки могут использоваться в сочетании с функциями. Например, рассмотрим ситуацию, в которой желательно возвращать более одного значения из функции. Вернуть более одного значения с помощью оператора return невозможно, к тому же может быть нежелательным использование глобальных переменных. С помощью ссылок вы можете вернуть столько значений, сколько нужно, причем в относительно понятной манере.
Основы программирования на РНР - создание ссылок на переменные. Концепция ссылок в РНР существенна для представления разработчикам возможностей ссылаться на данные, содержащиеся в переменной, по одному или более именам переменных. Это значит нечто большее, чем просто то, что две переменные имеют одно и то же значение (например, и $а, и $Ь равны 5).