Skip to content

Instantly share code, notes, and snippets.

View stemar's full-sized avatar

Steven Marshall stemar

View GitHub Profile
@stemar
stemar / numeric_format.php
Last active April 19, 2023 05:18
Localize numeric value using encapsulated NumberFormatter functions
<?php
/**
* Localize numeric value using encapsulated NumberFormatter functions
*
* @param float $amount
* @param array $kwargs
* @link https://www.php.net/manual/en/numberformatter.format.php
* @link https://www.php.net/manual/en/numberformatter.create.php
* @link https://www.php.net/manual/en/class.locale.php
* @return string|false
@stemar
stemar / currency_format.php
Last active April 4, 2023 00:44
Localize currency using encapsulated NumberFormatter functions
<?php
/**
* Localize currency using encapsulated NumberFormatter functions
*
* @param float $amount
* @param array $kwargs
* @link https://www.php.net/manual/en/numberformatter.formatcurrency.php
* @link https://www.php.net/manual/en/numberformatter.create.php
* @link https://www.php.net/manual/en/class.locale.php
* @return string|false
@stemar
stemar / datetime_format.php
Last active April 4, 2023 00:44
Localize datetime using encapsulated IntlDateFormatter functions
<?php
/**
* Localize datetime using encapsulated IntlDateFormatter functions
*
* @param IntlCalendar|DateTimeInterface|array|string|int|float $datetime
* @param array $kwargs
* @link https://www.php.net/manual/en/intldateformatter.format.php
* @link https://www.php.net/manual/en/intldateformatter.create.php
* @link https://www.php.net/manual/en/class.locale.php
* @return string|false
@stemar
stemar / sanitize_input_array.php
Last active January 18, 2023 22:37
Filter out non-allowed parameters in the request input and protect parameter values against XSS.
<?php
/**
* Filter out non-allowed parameters in the request input and protect parameter values against XSS
*
* @param int $type INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, INPUT_ENV
* @param array $allowed_params
* @link https://www.php.net/manual/en/function.filter-input-array.php
* @return array
*/
function sanitize_input_array($type, array $allowed_params) {
@stemar
stemar / array_map_recursive.php
Created January 18, 2023 07:17
Recursive array_map()
<?php
function array_map_recursive($callback, $array) {
$func = function ($item) use (&$func, &$callback) {
return is_array($item) ? array_map($func, $item) : call_user_func($callback, $item);
};
return array_map($func, $array);
}
@stemar
stemar / mb_str_split.php
Last active January 18, 2024 11:27
Multibyte str_split(). The mbstring library PHP < 7.x doesn’t come with a multibyte equivalent of str_split(). This function behaves like mb_str_split in PHP > 7.x
<?php
function mb_str_split($string, $length = 1, $encoding = NULL) {
if (!is_null($string) && !is_scalar($string)) {
$type = gettype($string) === 'object' ? get_class($string) : gettype($string);
throw new \Exception(sprintf('mb_str_split(): Argument #1 ($string) must be of type string, %s given', $type));
}
if ((!is_null($length) && !is_numeric($length)) || $length === '') {
$type = gettype($length) === 'object' ? get_class($length) : gettype($length);
throw new \Exception(sprintf('mb_str_split(): Argument #2 ($string) must be of type int, %s given', $type));
}
@stemar
stemar / mysqli_example.php
Last active September 14, 2022 21:15
Show MySQL types vs PHP types (MySQL formats) from a SELECT statement
<?php
// Connect
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = mysqli_connect('localhost', 'root', '');
printf("Connected: %s\n", mysqli_get_host_info($mysqli));
// Create database
$database = 'mysqli_example';
$sql = sprintf("CREATE DATABASE IF NOT EXISTS %s", $database);
@stemar
stemar / SVN_workflow.md
Last active April 13, 2021 19:05
SVN commands and workflow
@stemar
stemar / path.php
Created December 7, 2019 00:07
Normalize a path in PHP
<?php
/**
* Normalize a path.
*
* Usage: path('./one/', '/two/', 'three/');
* Result: "./one/two/three"
* @param array $parts
* @return string
*/
function path(...$parts) {
@stemar
stemar / vardump.php
Created September 15, 2019 05:52
PHP var_dump() without newline after =>
<?php
/**
* PHP var_dump() without newline after => .
*
* NOTE: The only issue is when a string value has `=>\n[ ]+`, it will get converted to `=> `
* @link https://www.php.net/manual/en/function.var-dump.php
*/
function vardump($value, $return=FALSE) {
ob_start();
var_dump($value);