не каждую тему нужно раскрывать в максимальной степени подробно, особенно, если для этого в php есть готовая фукнция. как правило, методом «научного тыка» пользуются новички либо люди, пришедшие в php с какого-то другого языка программирования. далее идёт небольшая часть мини-вопросов, оформленная в виде faq`a.
- как преобразовать строку в число?
- как произвести сцепку (конкатенацию) строк?
- каким образом формировать запросы в бд?
- каким образом использовать регулярные выражения?
- как работать с utf-8?
как преобразовать строку в число?
в php отсутствует строгая типизация. и в этом, конечно, его сила. но иногда требуется явное задание типа числа, например, при получении из формы каких-то значений (изначально они все строкового типа). для приведения строки к нужному типу можно воспользоваться следующими конструкциями:
$s1 = '123'; // строка, содержащая целое число
$s2 = '123.45'; // строка, содержащая вещественное число
$i = (int) $s1; // или так: $i = intval($s1);
$f = (float) $s2; // или так: $f = floatval($s2);
преобразование производится слева направо, до первого некорректного символа. т. е. любая строка может будет переведена в число ().
как произвести сцепку (конкатенацию) строк?
здесь проблемы могут возникнуть в основном у тех, кто ранее программировал, допустим, на javascript, в котором склейка производится с помощью знака +. с одной стороны это удобно, всё-таки унификация, но с другой, выполнив код:
var a = '1', b = '2', i = a + b;
получим 12, а не ожидаемые 3 (т. е. для данного случая требуется явное приведение типов для чисел a и b к целому). в php для конкатенации используется знак точка «.»:
$a = '1'; $b = '2';
$i = $a + $b; // результат 3 (целое)
$s = $a . $b; // результат 12 (строка)
каким образом формировать запросы в бд?
строка запроса — обычный текст, и должна оформляться как корректная текстовая строка; она должна быть: заключена в кавычки (одинарные или двойные), аналогичные кавычки внутри строки должны быть экранированы, т. е. предварены символом обратный слэш \
$sql = "SELECT * FROM `table` WHERE `txt` = '$str' AND 'don\'t'";
$r = mysql_query($sql);
каким образом использовать регулярные выражения?
в отличие от perl или javascript регулярные выражения в php не являются классами/объектами языка и не имеют специального синтаксиса (в javascript, например, делается так: /^[0-9]+$/, в php это недопустимо и выражение необходимо заключить в кавычки). для написания регулярки требуется создать обычное строковое выражение в соответствии с правилами написания данных выражений. простейшая проверка на строку, состоящую только из латинских букв и цифр (допустим, логин пользователя, длинной от 3 до 12 символов) будет иметь такой вид (здесь $str — произвольная строка):
$preg = '/^[a-z0-9]{3,12}$/i';
if (preg_match($preg, $str)) { /* код если логин корректный */ }
как работать с utf-8
php не поддерживает работу со строка в данной кодировке (это обещается только с версии 6). но это не значит, что сайты в utf-8 делать нельзя. наоборот, можно, и даже нужно! и для этого предоставляются достаточно мощные и удобные инструменты: библиотеки iconv и mbstring, и регулярные выражения, записанные со специальным модификатором. после этого нужно настроить любимый текстовой редактор так, чтобы он сохранял скрипты в кодировке utf-8 (без сигнатуры BOM, это очень важно!). после этого можно спокойно работать со строками почти также, как привыкли (будут отличаться названия функций, но это не страшно). для библиотечных функций, в принципе, всё понятно (часть их дублирует соответствующие функции из php, предваряя превычное название префиксом iconv_ или mb_). а вот как, с помощью регулярного выражения, можно проверить корректность имени города (модификатор u подсказывает движку регулярных выражений, что строка в utf-8. в названии города могут содержаться цифры, буквы, пробел и знак -):
$preg = '/^[а-яё0-9 -]+$/iu';
if (preg_match($preg, $city)) { /* код если логин корректный */ }
днём интернета
шоколадкой для работы мозга
коробочкой ароматного чая для бодрости
продлением хостинга на +1 месяц