Подсказки и приемы по программированию на PHP

Это статья-шпаргалка с примерами по программированию на PHP. Здесь для удобства я собрал приемы и часто используемые мной функции при программировании. Статья будет пополняться по мере необходимости.

Оглавление

Прием значения чекбокс (checkbox) для последующей записи его значения в поле БД с типом boolean.

Код html:

<form name="test" method="post" action="script.php">
<input type="checkbox" name="chk" checked="checked" />
<input type="submit" value="Отправить" />
</form>

Код script.php:

if (isset($_REQUEST["chk"])) {$chk = $_REQUEST["chk"];} else {$chk = "0";}
if ($chk === 'on') {$chk = "1";}
// если чекбокс отмечен, то $chk = "1", если не отмечен, то $chk = "0"

$chk = isset($_REQUEST['chk']) ? 1 : 0; // или более короткая запись

Прием нескольких значений списка select с заданным атрибутом multiple.

Код html:

<form name="test" method="post" action="script.php">
<select size="2" multiple name="sel2[]">
<option value="1">Один</option>
<option value="2">Два</option>
<option value="3">Три</option>
</select>
</form>

Код script.php:

if (isset($_REQUEST["sel2"])) {$sel2 = $_REQUEST["sel2"];} // примем входящий параметр
else {$sel2 = 0; echo "значения не выбраны";}
if ($sel2 <> 0) {
  $cn = count($sel2); // длина массива
  for ($i = 0; $i < $cn; $i++) { // перебираем массив
	echo $sel2[$i] . '<br>'; // выводим выбранные значения
  }
}

Установить русскую кодировку для правильной работы строковых функций (setlocale). Ставится в начале php-скрипта.

setlocale(LC_ALL, "ru_RU.UTF-8");

Прием входящего параметра переданного методами $_POST, $_GET или $_COOKIE (isset, $_REQUEST)

if (isset($_REQUEST['sid'])) {$sid = (int)$_REQUEST['sid'];} else {$sid = 0;}

Узнать длину массива (количество элементов) (count)

$arr[] = 'ddd';
$arr[] = 'sss';
$cn = count($arr); // вернет 2

Проверить входит ли значение в массив (in_array)

in_array($id, array(1, 7, 11, 6)); // возвращает true, если значение $id найдено среди значений массива и false, если значение не найдено

Строковые функции (strlen, trim, stripslashes, mb_strpos, mb_substr, mb_convert_encoding, str_replace, mysqli_escape_string, mb_strtolower, mb_strtoupper)

$s = strlen($st); // узнать длину строки
$st = trim($st); // обрезать начальные и конечные пробелы
$st = stripslashes($st); // удалить экранирование, которое делает метод POST
$pos1 = mb_strpos($pg, $fl, $off, 'windows-1251'); // найти в строке $pg первую позицию подстроки $fl начиная искать пропустив первые $off символов и с учетом кодировки windows-1251
$st = mb_substr($str, $st, $dl, 'UTF-8'); // обрезать строку $str начиная с символа под номером $st (счет ведется от 0) длиной $dl символов с учетом кодировки UTF-8
$slo = mb_convert_encoding($slo, "UTF-8", "CP1251"); // конвертировать строку из кодировки CP1251 в кодировку UTF-8
$st = str_replace('\r\n', '&#13;&#10;', $st); // заменить переносы строки для данных полученных из многострочного текстового поля
$st = mysqli_escape_string($mysqli, $st); // экранировать спецсимволы в строке для записи в БД с учетом соединения с БД в переменной $mysqli
$st = mb_strtolower($st); // приведет строку к нижнему регистру
$st = mb_strtoupper($st); // приведет строку к верхнему регистру

Создание и доступ к 2-мерному массиву (массиву хранящему массив) (array)

$arr[] = array('sl1', 'txt', 'link1', 'int', 'NULL');
$arr[] = array('sl2', 'txt', 'link2', 'int', 'NULL');
$arr[] = array('sl3', 'txt', 'link3', 'int', 'NULL');
$nm1 = $arr[0][2]; // вернет link1

Подключить файл однократно перед выполнением (require_once). Файл лежит в той же папке.

require_once 'script.php';

Создать свою функцию (function)

function upd_str($a, $b) {
 global $m; // подключить глобальную переменную
 $ret = $m . $a . $b;
 return $ret;
}
$m = 7;
$st = upd_str(5, 'test'); вызвать функцию

Вывести одну строку из БД (mysqli_connect, $mysqli->connect_errno, $mysqli->query, mysqli_fetch_assoc, mysqli_free_result, mysqli_close)

$mysqli = mysqli_connect($host,$user,$pass,$db); // подключение к БД
if ($mysqli->connect_errno) {printf("Connect failed: %s\n", $mysqli->connect_error); exit();} // обработка ошибки подключения к БД
$id = 1; // номер искомой записи
$query = "SELECT elem, atr1 FROM tbl WHERE id = " . $id . ";"; // зададим SQL-запрос
$result = $mysqli->query($query); if (!$result) {printf("Errormessage: %s\n", $mysqli->error);} // выполним SQL-команду
$row = mysqli_fetch_assoc($result); // считаем строку из результата
$el = $row['elem']; // считаем значение столбца elem в строке
$a1 = $row['atr1']; // считаем значение столбца atr1 в строке
echo $el . ' - ' . $a1; // выведем данные
mysqli_free_result($result); // освободим результат
mysqli_close($mysqli); // закроем соединение с БД

Возвратить несколько значений из функции (return, list)

function upd_str($a, $b) {
 $x = $a + $b;
 $y = $a * $b;
 return array($x, $y) ;
}
list($xx, $yy) = upd_str(4, 3);

Получить содержимое документа из Интернета в строку (file_get_contents)

$pg = file_get_contents('http://site.com/dir/file.php');

Вывести все позиции вхождения подстроки $fl в строке $pg (while, mb_strpos)

$pos1 = true;
$off = 0;
while ($pos1 !== false) {
  $pos1 = mb_strpos($pg, $fl, $off, 'UTF-8');
  if ($pos1 !== false) {
    $off = $pos1 + 1;
    echo $pos1 . '<br>';
  }
}

Получить случайное число (rand)

$rnd = rand(1, 10); // выведет случайное число от 1 до 10 включительно

Установить задержку выполнения программы (sleep, time_nanosleep)

sleep(1); // отложит исполнение программы на 1 секунду
$nano = time_nanosleep(0, 500000000); // отложит исполнение программы на 0,5 секунды
$nano = time_nanosleep(2, 100000); // отложит исполнение программы на 2 секунды 100 микросекунд

Массив с русским и английским алфавитом (array)

$arr = array('а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я');
$arr = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');

Перебрать все элементы массива $arr (foreach)

foreach ($arr as $key => $value) {
  echo $key . ': ' . $value;
}

Цикл с неизвестным количеством итераций (while)

$pos1 = true;
while ($pos1 !== false) {
  $pos1 = mb_strpos($pg, $fl, $off, 'UTF-8');
  $off = $pos1 + 1;
  echo $pos1 . '<br>';
}

Цикл с известным количеством итераций (for)

for ($x=1; $x<10; $x++) {
  echo $x . '<br>';
}

Прерывание выполнения цикла (break)

for ($x=1; $x<10; $x++) {
  echo $x . '<br>';
  if ($x == 5) {
    break; // прервёт выполнение цикла на 5-м шаге
  }
}

Установить часовой пояс сервера в php-скрипте (date_default_timezone_set). Для корректной работы функций даты и времени.

date_default_timezone_set('Europe/Moscow');

Определить директорию, в которой находится php-скрипт (pathinfo)

$path_parts = pathinfo($_SERVER['SCRIPT_FILENAME']);
$dir = $path_parts['dirname']; // директория скрипта без конечного слэша '/'

Задать директорию выполнения скрипта (pathinfo, chdir). Бывает необходимо при выполнении php-скрипта cron-ом.

$path_parts = pathinfo($_SERVER['SCRIPT_FILENAME']);
chdir($path_parts['dirname']);

Вывести имена файлов и вложенных папок из заданной директории (scandir)

foreach (scandir($dir) as $value) {
  if ($value != ".." || $value != ".") {
    echo value  . '<br>';
  }
}

Получить время последнего изменения файла (filemtime). Время выдается в формате метки Unix - секунд, прошедших от эпохи Unix.

$vr = filemtime($file_with_dir);

Удалить файл (unlink)

unlink($file_with_dir);

Прочитать файл в массив (file). Каждая строка файла станет отдельным элементом массива.

$a = file($dir . $value);
foreach ($a as $key => $value) {
  echo $value . '<br>';
}

Поменять кодировку у всех элементов массива (array_map, mb_convert_encoding)

$a = array_map( function ($val) {return mb_convert_encoding($val, "UTF-8", "CP1251");}, $a ); // поменяет кодировку CP1251 на UTF-8

Применить функцию ко всем элементам массива(array_map)

$a = array_map("trim", $a); // обрежет боковые пробелы у всех элементов массив
$a = array_map("mb_strtolower", $a); // сделает все буквы строчными у всех элементов массива

Удалить повторяющиеся элементы массива (array_unique)

$b = array_unique($a);

Удалить из массива $b все элементы, которые встречаются в массиве $bd (array_diff)

$rs = array_diff($b, $bd);

Удалить из массива все пустые элементы (array_diff)

$sl = array_diff($sl, array(''));

Удалить символ конца строки в строке (str_replace). Один из способов обязательно сработает.

$st = str_replace(PHP_EOL, "", $st);
$st = str_replace("\r", "", $st); // обязательно в двойных кавычках
$st = str_replace("\n", "", $st); // обязательно в двойных кавычках
$st = str_replace("\r\n", "", $st); // обязательно в двойных кавычках

Перезаписать существующий файл (file, array_diff, fopen, fputs, fclose). Предварительно удалив из него пустые строки.

$a = file('111.txt');
$a = array_diff($a, array(''));
$fp = fopen('111.txt', "w");
fputs($fp, implode("", $a));
fclose($fp);









Все статьи-шпаргалки по программированию:

Поделиться статьей:  

Поделитесь своим мнением

Правила сообщений

Для оформления сообщений Вы можете использовать следующие тэги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Копирование материалов разрешено только с указанием источника и прямой индексируемой ссылкой на оригинал.
Яндекс.Метрика
© 2018 Хороший отзыв · Искусство выбирать · Лично · Разумно · Честно