Archive for the ‘PHP5’ Category

HTML: UTF-8 encoding

Wednesday, July 14th, 2010

To get a html page to display UTF-8 encoded text correctly (without setting a default charset) simply add the following to the head of the html page.

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

PHP: Converting a bool value to a string value

Monday, July 12th, 2010

The first idea that comes into mind for doing this is to simply make a typecast of the boolean variable to a string and use that (which works)

$testVar = false;
echo (string)$testVar; //will output a empty string (as that evaluates to false)
$testVar = true;
echo (string)$testVar; //will output 1 (as that evaluates to true)

but what if the requirement is that the string should say true or false

$testVar = false;
echo $testVar ? 'true' : 'false'; //will output false
$testVar = true;
echo $testVar ? 'true' : 'false'; //will output true

(While the above example might seam useless I recently had to do this for a db insert)

PHP: Static functions in a Class

Friday, June 18th, 2010

Static functions can be used without instantiating the object.

A quick example of a static function is shown below as well as a comparison with a non static function.

A quick example of this (in PHP5):

class TestClass{
	static function staticFunction(){
		echo "static function called";
	}
 
	function nonStaticFunction(){
		echo "nonstatic function was called";
	}
}
 
TestClass::staticFunction(); //will echo static function called
 
$testClass = new TestClass();
$testClass.nonStaticFunction(); //will echo nonstatic function was called
unset($testClass);

PHP: converting a uuid stored as BINARY(16) in mysql to RFC 4122 format

Wednesday, June 16th, 2010

If you are storing uuid’s are BINARY(16) in the database, then the following will turn the stored id to the “original” format.

$uuidReadable = unpack("h*",$uuid);
$uuidReadable = preg_replace("/([0-9a-f]{8})([0-9a-f]{4})([0-9a-f]{4})([0-9a-f]{4})([0-9a-f]{12})/", "$1-$2-$3-$4-$5", $uuidReadable);
$uuidReadable = array_merge($uuidReadable);
echo "uuid is " . $uuidReadable[0];

PHP5: Quick on timing a script

Thursday, June 3rd, 2010

Sometimes it is nice to know how long a scrip took to execute (or a part of a script).
This is a simple way to time a script in php.

$time_start = microtime(true);
 
usleep(500);
 
$time_end = microtime(true);
$time = $time_end - $time_start;
 
echo "run time was " . $time . " seconds";

SimpleXML tags with – in the name

Tuesday, May 25th, 2010

Sometimes a xml file will have tags with “-”s in the name.
It is not to hard to parse this using simplexml, just use the tagname inside curly brackets like: “{tag-name}”

<?xml version="1.0" encoding="utf-8"?>
<medprod xmlns:npl="urn:schemas-instance" version="129">
  <statuses>
    <mpa_status xmlns:mpa="urn:schemas-mpa" datastatus="valid" procstatus="reviewed"/>
  </statuses>
  <mpa_pharmaceutical-form-group-lx xmlns:mpa="urn:schemas-mpa" v="OSD"/>
</medprod>

Let’s assume we load the above in a SimpleXML object called $simplemedprodXml

$simplemedprodXml= simplexml_load_string($xmlString);
echo (string)$simplemedprodXml['version'];
echo (string)$simplemedprodXml->statuses->mpa_status['datastatus'];
echo (string)$simplemedprodXml->statuses->mpa_status['procstatus'];
echo (string)$simplemedprodXml->{'mpa_pharmaceutical-form-group-lx'}['v'];

PHP: casting stdClass Object to a array

Thursday, April 15th, 2010

When using Soapclient to access a webservice the returned object will be of a stdClass Object.

If you don’t wish to access this as an object, but would find it easier to use it as an array then a quick cast solves this.

/*As an object*/
print_r($soapResult->contents);
/*cast to an array*/
$soapResult = (array)$soapResult;
print_r($soapResult['contents']);

 at the top of the page (UTF-8 BOM)

Wednesday, April 14th, 2010

These characters are the Byte Order Mark (BOM) of the Unicode Standard.

This can be solved in two ways:

  • Save the file without the BOM (some editors have this as an advanced option)
    • Using vi:
       :set nobomb

      and then save the file

  • Make sure the right encoding is used to present the file (meta charset) / .htaccess or similar

PHP5: Quick on exceptions

Thursday, January 21st, 2010

Very quick (&dirty):

1
2
3
4
5
6
7
8
try{
	doStuff();
}
catch (Exception $e){
	echo 'Error on line '. $e->getLine().' in '. $e->getFile() . $e->getMessage();
	//Or if you are working inside an object, you could use.
	echo 'Error on line '.$this->getLine().' in '.$this->getFile() . $e->getMessage();
}

Now to catch a specific kind of exception (in this case CustomException), and say woups, but to re-throw all other Exceptions.

1
2
3
4
5
6
7
8
9
10
11
try{
	doStuffThatCanGiveCustomException();
}
catch (Exception $e){
	//echo get_class($e) . "<br/>";
	if (get_class($e) == "CustomException" && $e->getMessage() === "My custom exception message."){
		echo "woups";
	}
	else
		throw $e;
}

To throw a custom exception:

 throw new Exception('My exception message');

For more informaion about this please check out the php manual