WordPress как на ладони
Наставник Трепачёв Д.П., phphtml.net wordpress jino

Полезные PHP коды — для опытных

Несколько готовых сниппетов для решения конкретных задач в PHP. Эти приемы рассчитаны на пользователей, которые знакомы с PHP. Коды ниже могут стать готовым решением или основной для очередного велосипеда. А также хорошей основой для понимания некоторых моментов, касательно того как решаются разные задачи в PHP. В общем, читайте и выносите для себя что-то новое...

Как наложить водяной знак или текст на картинку в PHP

Накладываем водяной знак

Пример ниже показывает как наложить одну картинку на другую, при этом первой картинке будет задана прозрачность в 60% и размещена она будет в нижний правый угол второй картинки.

/**
 * Накладывает указанный водяной знак на указанную картинку и выводит результат на экран.
 * @param string $img_path           Путь до картинки JPG формата. Исходная картинка
 * @param string $watermark_path     Путь до картинки JPG формата - картинка - водяной знак
 * @param string [$save_path = NULL] Путь для сохранения файла. Если равен NULL, изображение будет выведено на экран в бинарном виде.
 */
function apply_watermark( $img_path, $watermark_path, $save_path = NULL ){
	// получаем размеры обоих картинок
	$size      = getimagesize( $img_path );
	$size_wm   = getimagesize( $watermark_path );
	$height    = $size[1];  // высота
	$width     = $size[0];  // ширина
	$height_wm = $size_wm[1];
	$width_wm  = $size_wm[0];

	// определим формат
	$img_ext = preg_match('~\.png$~i', $img_path) ? 'png' : 'jpg';
	$wm_ext  = preg_match('~\.png$~i', $img_path) ? 'png' : 'jpg';

	// загружаем изображения
	$image     = $img_ext === 'jpg' ? imagecreatefromjpeg( $img_path ) : imagecreatefrompng( $img_path );
	$watermark = $wm_ext === 'jpg'  ? imagecreatefromjpeg( $watermark_path ) : imagecreatefrompng( $watermark_path );

	$opacity = 60; // прозрачность

	// высчитываем координаты для наложения водяного знака
	$x = $width - $width_wm;
	$y = $height - $height_wm;

	// объединяем две картинки
	imagecopymerge( $image, $watermark, $x, $y, 0, 0, $width_wm, $height_wm, $opacity );

	if( ! $save_path ){
		// задаем заголовок, чтоб вывести результат в браузере
		header('Content-Type: image/jpeg');
	}

	imagejpeg( $image, $save_path );

	// очищаем память
	imagedestroy( $image );
	imagedestroy( $watermark );
}

Пример использования функции

$uploads        = wp_get_upload_dir()['basedir'];
$img_path       = $uploads . '/2017/03/Poisk-nuzhnyh-kvorkov-po-razdelam.png';
$watermark_path = $uploads . '/2013/10/yandex.png';

// записываем результат в файл my_image.jpg в корне сайта
apply_watermark( $img_path, $watermark_path, $_SERVER['DOCUMENT_ROOT'] .'/my_image.jpg' );

echo '<img src="'. home_url('my_image.jpg') .'" alt="">';

Накладываем текст

Для нанесения текста в любой кодировке и на любом языке возможно благодаря сторонним шрифтам.

В основе примера используется функция — imagettftext(). Она может принимать несколько значений: размер текста в пикселях, цвет, начало текста относительно координат по осям X и Y, сам наносимый текст и самое главное, файл шрифта, который позволит наносить текст в нужной кодировке.

$width  = 200; // ширина изображения
$height = 100; // высота изображения

// создаем изображение, на котором будем рисовать
$img = imagecreatetruecolor( $width, $height );

$rgb = 0xFFFFFF; // цвет заливки фона

imagefill( $img, 0, 0, $rgb ); // заливаем холст цветом $rgb

$fontName = "impact.ttf"; // путь к шрифту

$font_sise = 18;       // размер шрифта
$textColor = 0x000000; // цвет шрифта
$x = 50; // отступ слева
$y = 50; // отступ справа

// текст, который будем наносить на картинку \n обозначает переход на новую строку
$text = 'Текст\n кириллица';

// нанесение текста
imagettftext( $img, $font_sise, 0, $x, $y, $textColor, $fontName, $text );

// выводим результат в браузер
header("Content-Type: image/png");
imagepng( $img );

// очищаем память
imagedestroy( $img );

Нанесение на изображение текста с обводкой

Для создания обводки специальных функций в PHP нет. Но её можно сделать через функцию — imagettftext(). Нужно вывести текст много раз - девять. Да, девять раз, из них восемь раз вывод текста нужно делать цветом обводки, постоянно смещая текст 1-2 пикселя влево, вправо, вниз, вверх, влево и вверх, вправо и вверх, вправо и вниз, влево и вниз. И девятый раз выводим текст уже тем цветом, которого он должен быть.

$width  = 200; // ширина изображения
$height = 100; // высота изображения

// создаем изображение, на котором будем рисовать
$img = imagecreatetruecolor($width, $height);

$rgb = 0xFFFFFF; // цвет заливки фона

imagefill( $img, 0, 0, $rgb ); // заливаем холст цветом $rgb

$fontName = "impact.ttf"; // путь к шрифту

$fontSise    = 18;       // размер шрифта
$textColor   = 0xFFFFFF; // цвет шрифта
$aroundColor = 0x000000; // цвет обводки
$x = 50;                 // отступ слева
$y = 50;                 // отступ справа

// текст, который будем наносить на картинку \n обозначает переход на новую строку
$text = "Текст\n кириллица";

// обводка текста
imagettftext( $img, $fontSise, 0, $x+2, $y, $aroundColor, $fontName, $text );   // смещение вправо
imagettftext( $img, $fontSise, 0, $x-2, $y, $aroundColor, $fontName, $text );   // смещение влево
imagettftext( $img, $fontSise, 0, $x, $y+2, $aroundColor, $fontName, $text );   // смещение вниз
imagettftext( $img, $fontSise, 0, $x, $y-2, $aroundColor, $fontName, $text );   // смещение вверх
imagettftext( $img, $fontSise, 0, $x+1, $y+1, $aroundColor, $fontName, $text ); // смещение вправо и вниз
imagettftext( $img, $fontSise, 0, $x+1, $y-1, $aroundColor, $fontName, $text ); // смещение вправо и вверх
imagettftext( $img, $fontSise, 0, $x-1, $y-1, $aroundColor, $fontName, $text ); // смещение влево и вверх
imagettftext( $img, $fontSise, 0, $x-1, $y+1, $aroundColor, $fontName, $text ); // смещение влево и вниз
imagettftext( $img, $fontSise, 0, $x, $y, $textColor, $fontName, $text );       // вывод самого текста

// выводим результат в браузер
header("Content-Type: image/png");
imagepng( $img );

imagedestroy( $img ); // очищаем память

Нанесение на изображение текста с подчеркиванием

Для этих целей стандартных PHP функций нет. Поэтому нужно вывести текст и нарисовать под ним линию. Сложность в том, что необходимо знать координаты нанесения линии и ее длину. Для определения начала линии можно воспользоваться координатами самого текста, только прибавить к значению по оси Y размер самого текста. А для получения длины, можно воспользоваться функцией imagettfbbox(), которая определяет положение текста. Функция возвращает массив с восемью элементами, координаты углов, обрамляющей текст рамки. Используя полученные, координаты, можно высчитать длину текста.

$width  = 200; // ширина изображения
$height = 100; // высота изображения

// создаем изображение, на котором будем рисовать
$img = imagecreatetruecolor( $width, $height );

$rgb = 0xFFFFFF; // цвет заливки фона

imagefill( $img, 0, 0, $rgb ); // заливаем холст цветом $rgb

$fontName = "impact.ttf"; // путь к шрифту

$fontSise    = 18; // размер шрифта
$textColor   = 0x000000; // цвет шрифта
$paddingLine = 3; // отступ линии от начала текста
$x = 50; // отступ слева
$y = 50; // отступ справа

// текст, который будем наносить на картинку
$text = "Любой текст";

// выводим текст
imagettftext( $img, $fontSise, 0, $x, $y, $textColor, $fontName, $text );

// определяем размер текста
$textbox = imagettfbbox( $fontSise, 0, $fontName, $text );

// вычисляем ширину текста
$text_width = $textbox[2] - $textbox[ 0];

// толщина линии
imagesetthickness( $img, 3 );

// рисуем линию
imageline( $img, $x, $y + $paddingLine, $x + $text_width, $y + $paddingLine, $textColor );

// выводим результат в браузер
header("Content-Type: image/png");
imagepng( $img );

imagedestroy( $img ); // очищаем память
к началу

Экранирование строк в регулярных выражениях

Если в «регулярку» передается динамичная строка, то её принято экранировать с помощью preg_quote(). Однако иногда такой экран может не подойти, когда, например, не нужно экранировать символ : допустим в url. В этом случае может пригодится менее известная функция quotemeta() - она не экранирует символы: { } = ! < > | : -. Смотрите разницу:

preg_quote('. \ + * ? [ ^ ] $ ( ) { } = ! < > | : -');
// экранирует: . \ + * ? [ ^ ] ( $ )   { } = ! < > | : -
// получим: \. \\ \+ \* \? \[ \^ \] \$ \( \) \{ \} \= \! \< \> \| \: \-

quotemeta('. \ + * ? [ ^ ] $ ( ) { } = ! < > | : -');
// экранирует: . \ + * ? [ ^ ] ( $ )
// получим: \. \\ \+ \* \? \[ \^ \] \$ \( \) { } = ! < > | : -

Обратите внимание, что символ / не является служебным и не экранируется нигде.

В preg_quote() можно указать второй параметр, тогда указанный там символ тоже будет экранироваться:

$str = '(40км/ч)';
preg_quote( $str );      //> \(40км/ч\)
preg_quote( $str, '/' ); //> \(40км\/ч\)
к началу

Как разбить предложение на слова в PHP

Чтобы разбить строку на отдельные слова, можно использовать PHP функцией – strtok( $str, $token ). Она принимает два параметра: строку и символы, по которым строка будет разбиваться на части.

strtok() разбивает строку $str на подстроки (токены), используя в качестве разделителей символы из $token.

Например, строку "Это примерная строка" можно разбить на отдельные слова используя пробел в качестве разделителя.

$string = "Бог наградил в нем слог и ум покорный,
Стал Моисей известный господин...";

// В качестве разделителей используем пробел, табуляцию и перевод строки
$tok = strtok( $string, " \n\t");

while ( $tok !== false ) {
	echo "word = $tok\n";
	$tok = strtok(" \n\t");
}

/*
Word = Бог
Word = наградил
Word = в
Word = нем
Word = слог
Word = и
Word = ум
Word = покорный,
Word = Стал
Word = Моисей
Word = известный
Word = господин...
*/

Заметьте, что исходная строка передается только при первом вызове strtok(). Последующим вызовам передаются только разделители, так как эта функция сохраняет исходную строку и запоминает позицию в этой строке между вызовами. Для работы с новой строкой нужно снова вызвать функцию с двумя аргументами.

Обратите внимание, что в параметре token можно использовать несколько разделителей. Строка будет делиться по любому найденному символу, присутствующему в этом параметре.

к началу

Как вывести слова с разной формой окончания в PHP

Часто возникает необходимость вывода числа с текстовой подписью. Например, вывод количества дней: 1 день, 2 дня, 5 дней. Форма слова меняется в зависимости от числа.

Чтобы не писать условия для каждого случая, создадим универсальное условие.

## Функция склонение после числительных
function num_form( $number, $forma1, $forma2, $forma3 ){
	if( $number == "0" )                         $forma = $forma3;
	elseif( ($number >= 5) && ($number <= 20) )  $forma = $forma3;
	elseif( preg_match('/[056789]$/', $number) ) $forma = $forma3;
	elseif( preg_match('/[1]$/', $number) )      $forma = $forma1;
	elseif( preg_match('/[234]$/', $number) )    $forma = $forma2;

	return "$number $forma";
}

$array = array(1, 2, 5);
	foreach($array as $num){
	echo num_form($num, "день", "дня", "дней") . "<br>";
}
/*
1 день
2 дня
5 дней
*/

Еще одна функция для такого склонения слова после чисел - альтернативный вариант.

И еще один вариант предложен в комментариях, когда нужен текст вида опубликован 21 комментарий. Т.е. в данном случае склоняется слово и перед числом, и после числа.

к началу

Как получить список файлов внутри папки (включая подпапки) на PHP

Готовая PHP-функция, которая получает список всех файлов, находящихся в заданной папке, также включаются файлы, находящиеся в подпапках.

Результатом работы функции является массив со списком всех файлов.

/**
 * Получает пути всех файлов в указанной папке, включая все вложенные уровни.
 * 
 * @param $dir Путь до папки со слэшем на конце или без.
 * @return Вернет массив путей до файлов.
 */
function get_dir_files( $dir ){
	$filenames = array();
	$dir = rtrim( $dir, '/\\' ); // удалим слэш на конце

	if( is_dir($dir) ){
		if( $handle = opendir($dir) ){
			chdir( $dir );
			while( false !== ($file = readdir($handle)) ){ 
				if( $file != "." && $file != '..' ){ 
					if( is_dir($file) ){ 
						$arr = get_dir_files( $file );
						foreach( $arr as $value ) $filenames[] = $dir .'/'. $value;
					}
					else {
						$filenames[] = $dir .'/'. $file;
					}
				}
			}
			chdir('../');
		}
		closedir( $handle );
	}

	return $filenames;
}

$files = get_dir_files('/home/site.ru/wp-includes/');

/*
Array
(
	[0] => /home/site.ru/wp-includes/ms-settings.php
	[1] => /home/site.ru/wp-includes/embed.php
	[2] => /home/site.ru/wp-includes/rest-api.php
	[3] => /home/site.ru/wp-includes/registration.php
	[4] => /home/site.ru/wp-includes/cron.php
	...
*/
к началу

Удаление папки (директории)

Этот код полностью удаляет указанную папку, т.е. удаляется папка и все вложенные в нее папки и файлы. Для этого добавьте следующую PHP функцию и используйте её где нужно.

/**
 * Удаляет текущую директорию и все файлы и папки в ней...
 * @param string $folder_path Путь до папки которую нужно удалить
 */
function delete_folder( $folder_path ){
	$folder_path = untrailingslashit( $folder_path );

	foreach( glob("$folder_path/*") as $file ){
		if( is_dir($file) ) call_user_func( __FUNCTION__, $file );
		else                unlink( $file );
	}
	rmdir( $folder_path );
}

Поиск файла в папке и подпапках на PHP

Хорошим примером использования рекурсии, может послужить поиск файла в папке и всем вложенным подпапкам.

Для поиска файла, достаточно перебрать все файлы во всех папках и сравнить название файла с искомым. И в случае совпадения добавить путь до файла в массив найденных фалов.

$folderName = ABSPATH; // в какой папке ищем
$fileName   = "xml";   // что ищем

$found = search_file( $folderName, $fileName );

print_r( $found );
/* Вернет:
Array
(
	[0] => /home/site.ru/xmlrpc.php
	[1] => /home/site.ru/wp-includes/class-wp-xmlrpc-server.php
	[2] => /home/site.ru/wp-includes/wlwmanifest.xml
)
*/

/**
 * Поиск файла по имени во всех папках и подпапках
 * @param  string  $folderName - пусть до папки
 * @param  string  $fileName   - искомый файл
 * @return array   Массив найденных файлов.
 */
function search_file( $folderName, $fileName ){
	$found = array();
	$folderName = rtrim( $folderName, '/\\' );

	$dir = opendir( $folderName ); // открываем текущую папку

	// перебираем папку, пока есть файлы
	while( ($file = readdir($dir)) !== false ){
		$file_path = "$folderName/$file";

		if( $file == '.' || $file == '..' ) continue;

		// это файл проверяем имя
		if( is_file($file_path) ){
			// если имя файла искомое, то вернем путь до него
			if( false !== strpos($file, $fileName) ) $found[] = $file_path;
		}
		// это папка, то рекурсивно вызываем search_file
		elseif( is_dir($file_path) ){
			$res = search_file( $file_path, $fileName );
			$found = array_merge( $found, $res );
		}

	}

	closedir($dir); // закрываем папку

	return $found;
}
к началу

Массовая замена текста в файлах с помощью PHP или поиск в них

Этот пример может быть полезен, при работе с большим количеством файлов.

Пример ниже покажет, как можно перебрать все файлы в заданной папке, а также во всех вложенных папках и заменить в них строку на строку.

Вместо замены, этот код можно взять за основу, когда нужно создать поиск по файлам в папке и подпапках.

$oldText    = 'old text'; // что меняем
$newText    = 'new text'; // на что меняем
$folderName = "./files"; // в какой папке меняем

// запускаем функцию
replace_txt( $folderName, $oldText, $newText );

/**
 * Функция замены текста во всех файлах папки
 * @param string $folderName - пусть до папки
 * @param string $oldText    - искомый текст
 * @param string $newText    - на что меняем текст
 */
function replace_txt( $folderName, $oldText, $newText ){

	$dir = opendir( $folderName ); // открываем текущую папку

	// перебираем папку, пока есть файлы
	while( false !== ($file = readdir($dir)) ){
		// если это не папка
		if( $file != '.' && $file != '..' ){
			$file_path = "$folderName/$file";

			// это файл
			if( is_file($file_path) ){

				$file_content = file_get_contents( $file_path ); // получаем конетнт файла

				// для работы с файлами в кодировке windows-1251
				//$file_content = iconv( "windows-1251", "utf-8", $file_content );

				// делаем замену в тексте
				$file_content = str_replace( $oldText, $newText, $file_content );

				// сохраняем изменения 
				file_put_contents( $file_path, $file_content    );
			}
			// это папка, рекурсивно вызываем replace_txt()
			elseif( is_dir($file_path) ){
				replace_txt( $file_path, $oldText, $newText );
			}
		}
	}

	closedir( $dir ); // закрываем папку
}
к началу

Работа с zip архивами в PHP: запаковка и распаковка файлов

Когда необходимо программно запаковать файлы в zip архив, используйте модуль — ZipArchive, который установлен практически на всех серверах вместе с PHP.

Для работы с модулем, используется одноименный класс – ZipArchive.

Запаковка файлов в zip

Пример показывает как запаковать все папки, подпапки и файлы в них с помощью ZipArchive.

$pathdir = 'test/'; // путь к папке, файлы которой будем архивировать

$nameArhive = 'test.zip'; // название архива

$zip = new ZipArchive; // класс для работы с архивами

// создаем архив, если все прошло удачно продолжаем
if ( true === $zip->open($nameArhive, ZipArchive:: CREATE) ) {

	$dir = opendir( $pathdir ); // открываем папку с файлами

	// перебираем все файлы из нашей папки
	while ( $file = readdir($dir) ) {

		// проверяем файл ли мы взяли из папки
		if ( is_file($pathdir . $file) ) {

			$zip->addFile( $pathdir . $file, $file ); // архивируем
			// выводим название
			// заархивированного файла
			echo "Заархивирован: $pathdir $file<br>";
		}
	}

	$zip->close(); // закрываем архив.

	echo 'Архив успешно создан' ;
}
else {
	die('Произошла ошибка при создании архива' );
}

Распаковка файлов из zip

Теперь, пример распаковки zip архива с помощью ZipArchive.

function unzip_file( $file_path, $dest ){
	$zip = new ZipArchive;

	if( ! is_dir($dest) ) return 'Нет папки, куда распаковывать...';

	// открываем архив
	if( true === $zip->open($file_path) ) {

		 $zip->extractTo( $dest );

		 $zip->close();

		 return true;
	}
	else
		return 'Произошла ошибка при распаковке архива';
}

// использование 
$zipfile = 'test.zip'; // путь до файла архива
$pathdir = 'test/'; // путь к папке, в которую будет распакован архив
$done = unzip_file( $zipfile, $pathdir );
if( is_string($done) ){
	echo 'Ошибка: '. $done;
}

В WordPress для запаковки архивов есть специальные функция (работают только в админке) unzip_file()

к началу

Создание csv файла или получение данных из него в PHP

Создание csv файла в PHP

Пример ниже показывает как выгрузить данные в csv файл. Excel файл может иметь несколько расширений – xls, xlsx, csv и т.д. Самым удобным форматом с точки зрения генерации является csv, поскольку он устроен очень просто.

В таком файле столбцы таблицы разделяются каким-либо символом, который потом можно указать при открытии файла в MS Office. По умолчанию символом-разделителем является точка с запятой (;), его и стоит использовать во избежание проблем при дальнейшем чтении файла. А для разделения строк в csv файлах используется перенос строки.

Таким образом, получается, что для создания excel файла, достаточно создать текстовый файл, используя в нужных местах необходимые разделители столбцов и строк. Важным моментом, является кодировка файла. Для корректного отображения кириллицы следует использовать windows-1251.

// массив имитирует данные, полученные, например, из базы данных
$data = array(
	array(
		'строка1 столбец1',
		'строка1 столбец2',
		'строка1 столбец3',
	),
	array(
		'строка2 столбец1',
		'строка2 столбец2',
		'строка2 столбец3',
	),
	array(
		'строка3 столбец1',
		'строка3 столбец2',
		'строка3 столбец3',
	)
);

// строка, которая будет записана в csv файл
$str = '' ;

// перебираем все данные
foreach( $data as $value ){
	$str .= $value[0]. ';' . $value[1]. ';' . $value[2]. "; \r\n";
}

// задаем кодировку windows-1251 для строки
$str = iconv("UTF-8", "WINDOWS-1251",  $str );

// создаем csv файл и записываем в него строку
file_put_contents('test.csv' , $str );

Получение данных из csv файла в PHP

Когда требуется реализовать обратную операцию – сделать разбор csv файла, считать хранящиеся в нем данные. Получение данных из csv файла можно реализовать несколькими способами:

  1. Получить содержимое файла и разбить его с помощью функции explode().
  2. Использовать специальную php функцию – fgetcsv(), которая читает строку и производит ее разбор.

Второй вариант более красивый и простой, поэтому используем его:

$row = 1;

$file = fopen("test.csv", "r"); // открываем файл

// разбираем файл построчно
while( false !== ( $data = fgetcsv($file, 1000, ";") ) ){

	$countPlace = count( $data ); // количество полей в строке

	echo "$countPlace полей в строке $row: <br>";

	// выводим значения
	for ( $c=0; $c < $countPlace; $c++ ) {
		echo $data[ $c] . "<br>";
	}

	$row++;
}

fclose( $file ); // закрываем файл
к началу

Как перевести цвет из HEX в RGB и наоборот в PHP

Перевод цвета из HEX в RGB

## перевод цвета из HEX в RGB
function hex_to_rgb( $color ){
	// проверяем наличие # в начале, если есть, то отрезаем ее
	if ( $color[0] == '#' ) {
		$color = substr( $color, 1 );
	}

	// разбираем строку на массив
	if ( strlen($color) == 6 ) {
		// если hex цвет в полной форме - 6 символов
		list( $red, $green, $blue ) = array(
			$color[0] . $color[1],
			$color[2] . $color[3],
			$color[4] . $color[5],
		);
	}
	elseif ( strlen($cvet) == 3 ) {
		// если hex цвет в сокращенной форме - 3 символа
		list( $red, $green, $blue ) = array(
			$color[0]. $color[0],
			$color[1]. $color[1],
			$color[2]. $color[2],
		);
	}
	else {
		return false;
	}

	// переводим шестнадцатеричные числа в десятичные
	$red   = hexdec( $red );
	$green = hexdec( $green );
	$blue  = hexdec( $blue );

	return array(
		'red'   => $red,
		'green' => $green,
		'blue'  => $blue,
	);
}

// пример использования
$colorHex = '#FFAA00' ;
$result   = hex_to_rgb( $colorHex );
print_r( $result );
/*
Array (
	[red] => 255
	[green] => 170
	[blue] => 0
)
*/

Перевод цвета из RGB в HEX

## перевод цвета из RGB в HEX
function rgb_to_hex( $color ) {
	$red   = dechex( $color[0] );
	$green = dechex( $color[1] );
	$blue  = dechex( $color[2] );
	return "#$red$green$blue";
}

// пример использования
$colorRgb = array(125, 255, 0);
$result   = rgb_to_hex($colorRgb);
echo $result; //> #7dff0
Eugene Kopich 100web2033.com
Creative sites for creative people ★ Digital marketing
Полезные PHP коды — для опытных 6 комментариев
  • llgruff34 cайт: vygodno.me

    Как вывести слова с разной формой окончания в PHP

    Когда нужен текст вида опубликован 21 комментарий. Т.е. в данном случае склоняется слово и перед числом, и после числа.

    function num_form( $number, $before, $after ) {
      $cases = array(2,0,1,1,1,2);
      echo $before[($number%100>4 && $number%100<20)? 2: $cases[min($number%10, 5)]].' '.$number.' '.$after[($number%100>4 && $number%100<20)? 2: $cases[min($number%10, 5)]];
    }

    Использование:

    num_form(
      get_comments_number(),
      /* варианты написания для количества 1, 2 и 5 */
      array( 'опубликован', 'опубликовано', 'опубликовано' ),
      array( 'комментарий', 'комментария', 'комментариев' )
    );
    3
    Ответить3 месяца назад #
  • @

    Наложение водяного знака - прям во время, благодарю thank_you

    1
    Ответить3 месяца назад #
    • Kama4472

      Пожалуйста ok Если будут правки для кода, не ленись скидывай gamer

      1
      Ответить3 месяца назад #
  • Николай

    *Использовать специальную php функцию – fgetcsv(), которая читает строку и производит ее разбор.
    Второй вариант более красивый и простой, поэтому используем его:

    -------не всегда срабатывает

    -1
    Ответить3 месяца назад #
  • Продолжу) Парсинг csv - прям во время. Спасибо!

    Ответитьмесяц назад #

Здравствуйте, !

Ваш комментарий