Wed, 13/04/2011 - 20:36 — horuskol
PHP function to generate a Version 4 GUID based on IETF RFC 4122: A Universally Unique IDentifier (UUID) URN Namespace
function generateGUID() { $guid = ''; $time_low = str_pad(dechex(mt_rand(0, 65535)), 4, '0', STR_PAD_LEFT) . str_pad(dechex(mt_rand(0, 65535)), 4, '0', STR_PAD_LEFT); $time_mid = str_pad(dechex(mt_rand(0, 65535)), 4, '0', STR_PAD_LEFT); $time_high_and_version = mt_rand(0, 255); $time_high_and_version = $time_high_and_version & hexdec('0f');
Mon, 17/05/2010 - 23:24 — horuskol
I've just installed the PHP YAML library which is currently being developed. This will hopefully allow me to write more complex configuration documents than the tradition ini format allows.
The installation process was a bit hit and miss though, with minimal documentation, and a couple of errors on the way.
Ubuntu Packages
First off, you will need the following Ubuntu packages:
$ sudo apt-get install php5 $ sudo apt-get install php5-dev $ sudo apt-get install php-pear
Mon, 01/03/2010 - 19:50 — horuskol
As I go further down the rabbit hole that is web-development, and break away from the path of pre-built libraries and frameworks, I just keep learning more.
A few weeks ago I finally got around to creating my own collection class - for the uninitiated, a collection is a way of creating something that behaves like an array, but with the added advantage of having inheritable and extensible methods, like an object.
Mon, 14/12/2009 - 19:28 — horuskol
Okay, so automically generating a friendly URL for a blog post or forum post from their titles doesn't really take a lot - but this snippet might make it easier for you:
function make_slug($orig, $length = 0) { $slug = preg_replace('/[^a-zA-Z0-9]/', '-', $orig); $slug = preg_replace('/\-\-+/', '-', $slug); $slug = strtolower($slug); if ($length > 0) { // limits the length of the slug $slug = substr($slug, 0, $length); } if (strrpos($slug, '-') == strlen($slug) - 1) { // removes any ending - $slug = substr($slug, -1); }
Tue, 06/10/2009 - 19:53 — horuskol
I recently helped a poster at HTML Forums who wanted to be able to reformat floating point numbers in PHP.
The problem is that some of these numbers were in exponential format. There was also a requirement not to round a number like 0.004 to 0, although the 'precision' was to be constant for all uses of this function in the script.
8.8458e-119 = 8.84e-119 1.06542e-52 = 1.07e-52 2.68e-36 = 2.68e-36 2.91405e-35 = 2.92e-35 0.0190644 = 0.01 0.0205511 = 0.02 0.004 = 0.004
Sun, 06/09/2009 - 14:13 — horuskol
A fun little function that will produce the Roman Numeral representation for any number from 1-3999.
The reason for the limitation is because the Romans used barred letters for the number 5000 and larger, and the representation of 4000 would be MV, which is hard to represent in a simple ASCII string (maybe as an exercise to the reader, the function can be extended?).
function intToRoman($number) { if (!is_numeric($number)) { echo "Input is not a number\r\n\r\n"; return; }
Tue, 28/07/2009 - 15:30 — horuskol
pChart @ SourceForge is a pretty neat and compact graph/chart library for PHP.
Sun, 26/07/2009 - 19:00 — horuskol
I recently helped another developer looking for a way to only allow access to one site from an iframe on another. Ideally, this would be done with the HTTP_REFERRER header, but this isn't always set by the browser, and so would prevent too many people from seeing the content properly.
My solution was simply to use a time-based key that could be generated on the site containing the iframe and tested on the remote server before allowing access to the content.
Sat, 02/05/2009 - 23:27 — horuskol
One of my major projects at the moment is a large subscription-based knowledge-base management system. Along with the actual content management for the site, another major requirement for the site is to make the information as easy to find as possible – utilising organisation, related keywords, and, of course, a search engine. One of the design decisions was not to use an indexing script, as all of the content was already stored in the database, and a custom search engine would be easier to configure to add bias and weighting to particular sections of the content.