Skip to content

Instantly share code, notes, and snippets.

View chrisveness's full-sized avatar

Chris Veness chrisveness

View GitHub Profile
@chrisveness
chrisveness / seourl.php
Created June 16, 2014 16:55
Convert string to SEO-friendly form (lowercase hyphenated alphanumeric words)
<?php
/**
* Converts string to SEO-friendly form (lowercase hyphenated alphanumeric words)
*
* @param $string
* @return string
*/
function seoUrl($string)
{
@chrisveness
chrisveness / initials.php
Last active August 29, 2015 14:02
Return initial letters of words
<?php
/**
* Returns initial letters of all words from all arguments.
*
* @param $string $str,...
* @return string
* @example initials('Johann Sebastian', 'Bach') => 'JSB'.
*/
function initials()
@chrisveness
chrisveness / clean.php
Last active August 29, 2015 14:02
Clean up posted data
<?php
/**
* Cleans up posted data - trims texts & converts empty fields to null.
*
* @param mixed[] $post POST data to be cleaned.
* @return mixed[] Cleaned-up POST data.
*/
function clean($post)
{
@chrisveness
chrisveness / objencrypt.php
Created June 17, 2014 12:30
Encrypt/decrypt object to be stored secure from prying eyes
<?php
/**
* Encrypts object to be stored secure from prying eyes (uses AES-256 ECB).
*
* @param object $sourceObj Object to be encrypted.
* @param string $key Key to use for encryption.
* @return string Encrypted object.
*/
function objEncrypt($sourceObj, $key)
@chrisveness
chrisveness / truncate.php
Created June 18, 2014 08:28
Truncate text to given length with suffixed ellipsis
<?php
/**
* Truncates text to given length with suffixed ellipsis.
*
* @param string $text Original text string.
* @param int $length Length to truncate to.
* @param bool [$wholeWords=true] Whether to truncate back to whole words.
* @return string Truncated string.
*/
@chrisveness
chrisveness / ago.php
Last active August 29, 2015 14:02
Describe how long ago something happened in the past
<?php
/**
* Returns how long ago something happened in the past, showing it as
* 'n' seconds / minutes / hours / days / weeks / months / years ago.
*
* For periods over a day, it rolls over at midnight (so doesn't depend on
* current time of day), and it correctly accounts for month-lengths and
* leap-years (months and years rollover on current day of month).
*
@chrisveness
chrisveness / cookie.js
Created August 2, 2014 13:34
Cookie set / get / delete with safe handling of invalid characters in name & value
@chrisveness
chrisveness / getqueryarg-regexp.js
Created August 30, 2014 17:40
Get query string argument (using regexp)
/**
* Returns specified argument from query string.
*
* @params {string} key - Argument to be returned.
* @returns {string} Value of key ('' for ?arg=, null for ?arg, undefined if not present).
*/
function getQueryArg(key) {
// look for key prefixed by ?/&/;, (optionally) suffixed
// by =val (using lazy match), followed by &/;/# or EOS
var re = new RegExp('[?&;]'+key+'(=(.*?))?([&;#]|$)');
@chrisveness
chrisveness / getqueryarg-splitfor.js
Created August 30, 2014 17:38
Get query string argument (using split/for)
/**
* Returns specified argument from query string.
*
* @params {string} key - Argument to be returned.
* @returns {string} Value of key ('' for ?arg=, null for ?arg, undefined if not present).
*/
function getQueryArg(key) {
var srch = location.search.substring(1); // lose the initial '?'
var args = srch.split(/[&;]/); // list of field=value pairs
for (var i=0; i<args.length; i++) { // for each arg
@chrisveness
chrisveness / hyphen-camel.js
Last active August 29, 2015 14:07
Convert between camel-cased & hyphenated strings (eg SomeResourceName <=> some-resource-name)
/**
* Returns camel-cased equivalent of (lower-case) hyphenated string.
*
* To enable round-tripping, hyphens not followed by a-z are left intact
* (can be checked for and/or removed manually if required).
*
* Only transforms ASCII capitals (lack of JavaScript Unicode regexp).
*/
function hyphenToCamel(str) {
// for Unicode transforms, replace [a-z] with \p{Ll} if available