Как удалить из строки метку UTF-8 with BOM
$bom = pack('H*', 'EFBBBF');
$string = preg_replace("/^$bom/", '', $string);
$bom = pack('H*', 'EFBBBF');
$string = preg_replace("/^$bom/", '', $string);
if (!preg_match('/^[a-f\d]{8}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{12}$/', $guid)) {
// invalid guid
}
Если функция exec возвращает ошибку при выполнении консольной команды, которая успешно работает в cmd.exe
, то нужно проверить переменную окружения PATH, которая используется в php. И если в PATH нет пути к необходимой команде, то нужно добавить его.
Например, если не работает команда git, и в getenv('PATH')
нет пути к ней, то нужно добавить путь в PATH:
Прямо в скрипте:
$envPath = getenv('PATH');
$envPath .= ';c:\Program Files\Git\bin';
putenv('PATH=' . $envPath);
Либо в файле php.ini
в директиве include_path
.
Бывает полезно для просмотра ключей больших многомерных массивов.
function showArrayKeysStructure(array $array, $level = 0)
{
echo '<pre>';
foreach ($array as $key => $value) {
echo str_repeat("\t", $level) . var_export($key, true) . PHP_EOL;
if (is_array($value)) {
showArrayKeysStructure($value, $level + 1);
}
}
echo '</pre>';
}
function arrayToCsv(array $data): string
{
$fh = fopen('php://temp', 'rw');
fputcsv($fh, array_keys(current($data)), ';');
foreach ($data as $row) {
$row = array_map(
function ($value) {
return mb_convert_encoding($value, 'windows-1251', 'utf-8');
},
$row
);
fputcsv($fh, $row, ';');
}
rewind($fh);
$csv = stream_get_contents($fh);
fclose($fh);
return $csv;
}
Формат подходит для excel.
php
?// генерируем ключ
$keyResource = openssl_pkey_new([
'private_key_bits' => 2048,
'private_key_type' => OPENSSL_KEYTYPE_RSA,
]);
echo gettype($keyResource) . PHP_EOL; // resource
// получаем приватный ключ
openssl_pkey_export(
$keyResource,
$privateKey
);
echo $privateKey;
// -----BEGIN PRIVATE KEY-----
// MIIEvgIBADANBgkqhkiG9w0BAQEF...
// ...
// -----END PRIVATE KEY-----
// сохраняем приватный ключ в файл
file_put_contents(
'php-private-key.pem',
$privateKey
);
// получаем публичный ключ
$publicKey = openssl_pkey_get_details($keyResource);
echo $publicKey['key'];
// -----BEGIN PUBLIC KEY-----
// MIIBIjANBgkqhkiG9w0BAQEFAAO...
// ...
// -----END PUBLIC KEY-----
// сохраняем публичный ключ в файл
file_put_contents(
'php-public-key.pem',
$publicKey['key']
);
composer require vendor/package
Скачивает и устанавливает пакет, добавляет записи в файлы composer.json
и composer.lock
.
composer install
Если файла composer.lock
ещё нет, то install
создаст на основе composer.json
новый composer.lock
, и дальше скачает и установит зависимости (а так же удалит лишние, если такие есть) по данным из свежего composer.lock
.
Если файл composer.lock
уже есть, то install
скачает и установит зависимости (а так же удалит лишние) по данным из composer.lock
, а файл composer.json
будет проигнорирован.
composer update
Обновит версии пакетов и обновит файл composer.lock
.
Допустим у нас есть данные:
$data = 'My secret data!';
И мы хотим зашифровать их, чтобы позже расшифровать с использованием пароля, например такого:
$password = '1234';
Но открытый пароль мы не будем передавать, а создадим на его основе ключ с помощью хеширования и передадим его.
$key = sha1($password);
Рекомендуется использовать для шифрования библиотеку OpenSSL: openssl_encrypt()
, openssl_decrypt()
и вспомогательные функции.
Для начала нужно выбрать метод шифрования, например, aes-128-cbc
. Все доступные методы можно посмотреть вызвав функцию openssl_get_cipher_methods()
.
$method = 'aes-128-cbc';
Теперь нам нужно создать вектор инициализации (IV, Initialization Vector) - случайные данные, на основе которых будет произведено шифрование.
Для windows очень просто - скачать с официального сайта инсталлятор и установить. :)
Плюс нужно прописать в PATH путь к консольным скриптам (c:\Program Files\RabbitMQ Server\rabbitmq_server-{VERSION}\sbin\
).
И добавить в .bashrc: alias rabbitmqctl='rabbitmqctl.bat'
, чтобы удобнее было запускать консольные команды.
Для установки на Linux и macOS инструкции есть на официальном сайте.
Выполнить в консоли:
rabbitmqctl status
Выполнить в консоли:
rabbitmqctl list_queues
Устанавливаем библиотеку php-amqplib
:
composer install php-amqplib/php-amqplib
Создаём объект соединения:
Можно добавить пользовательские обработчики с помощью следующих функций.
В конце работы скрипта:
void register_shutdown_function ( callable $callback [, mixed $parameter [, mixed $... ]] )
При ошибке:
mixed set_error_handler ( callable $error_handler [, int $error_types = E_ALL | E_STRICT ] )
При исключении:
callable set_exception_handler ( callable $exception_handler )