PHP

Posts about the server side scripting language PHP

Find The Nearest Word Using The Levenshtein Function In PHP

The levenshtein() function is part of a set of functions that are used to look at the structure of a string depending on how the string sounds, using levenshtein() allows you to look at the total difference between two strings, defined as a distance value. The important feature of this is that you can compare one string to another and see if they are similar.

The levenshtein() function takes two parameters, these are the two strings that you want to compare with each other. If the two strings are the same then the distance is zero, the higher this value is the more distance there is between two strings. Here are some examples.

Sorting A Multidimensional Array With PHP

Sorting an array is easy in PHP thanks for the built in sorting functions. However, when it comes to sorting a multidimensional array you need to employ these functions in a certain way, especially if you want to vary the data item you want to sort by.

Take the following defined array, taken from the top news stories in the Science and Nature section of the BBC website.

Work Out Real File Sizes With PHP

Displaying the size of a file in bytes is all well and good, but means little to most people so converting the size into something a little more readable is a must. The following function will take the number of bytes that a file is and convert it into something a little more meaningful. Rather than just convert the value into kilobytes it returns the largest denomination of size. So if your file is greater than 1073741824 bytes the function will return your value in gigabytes.

Check Backlinks With PHP

Backlinks are an important part of search engine optimisation and are also useful in seeing what sort of things are popular on your site. If you have a list of known backlinks that you want to keep track of then you can do it manually, or you can get a script to do it for you.

The following function takes two arguments, the first being the remote URL and the second is the URL you are checking for. The function works by doing a small amount of initial formatting on the URL you are checking for and then downloading the remote page in little bits and seeing if each bit contains a link. If it does then the function breaks out and returns true. If the link isn't there then it returns false.

Get Percentage Of A Number With PHP

Use the following function to find the percentage value of one number to another. If the $total parameter is zero then zero is returned as this would otherwise result in a division by zero error.

function get_percentage($total, $number)
{
  if ( $total > 0 ) {
   return round(($number * 100) / $total, 2);
  } else {
    return 0;
  }
}

Here are some examples of the function in action.

echo get_percentage(100,50).'%'; // 50%
echo get_percentage(100,10).'%'; // 10%
echo get_percentage(100,100).'%'; // 100%
echo get_percentage(400,3).'%'; // 0.75%
echo get_percentage(1234,4321).'%'; // 350.16%

Remove Blank Entries From An Array With PHP

If you have an array that you want to remove any null data items from then you can use the following function. It will create a new array and only copy across items from the existing array if they contain a value. If the value is an array the function calls itself and makes sure that the returned array contains something before adding it to the new array.

function array_purge_empty($arr) {
 $newarr = array();
 foreach ($arr as $key => $val) {
  if (is_array($val)) {
   $val = array_purge_empty($val);
   // does the result array contain anything?
   if (count($val) != 0) {
    $newarr[$key] = $val;
   }
  } else {
   if (trim($val) != "") {
    $newarr[$key] = $val;
   }
  }
 }
 return $newarr;
}

Here is an example of the function in action.

Getting An Excerpt Of Text With PHP

I have talked before about truncating strings to include whole words, but what if you want to have complete sentences? The following function will truncate a string the number of words specified and until the sentence ends.

function excerpt($paragraph, $limit)
{
 $tok = strtok($paragraph, " ");
 while ($tok !== false) {
  $text .= " ".$tok;
  $words++;
  if (($words >= $limit) && ((substr($tok, -1) == "!") || (substr($tok, -1) == ".") || (substr($tok, -1) == "?"))) {
   break;
  }
  $tok = strtok(" ");
 }
 return ltrim($text);
}

Using this function you can create an excerpt of any text you want, as long as it has a sentence in it. Take the following section of text.

Work Out The Number Of Days Before A Date

Use the following function to work out the number of days between today and a date in the future. The function takes three parameters of the day, month and year of the date in question.

<?php
function dateDifference($day, $month, $year)
{
 return (int)((mktime (0, 0, 0, $month, $day, $year) - time(void))/86400);
}
?>

To use this function just give it a date, here are some examples.

echo dateDifference(13,07,2008); // 42
echo dateDifference(01,01,2010); // the next "binary date" = 579
echo dateDifference(25,12,2010); // 937

 

Controlling Error Reporting On Different Servers With PHP

Having a testing server is quite a common practice, but what happens when you want to go live and you don't want all of your error messages displayed?

A good way of doing this is to create a variable that you can then use to detect what server your code is running on and set your error displaying accordingly. The following section of code will set a variable to true if the code is not running on the server name www.hashbangcode.com. This variable is then used to set the error reporting level.

<?php
 $turnOnErrors = $_SERVER['SERVER_NAME'] != 'www.hashbangcode.com';
 
 if ( $turnOnErrors ) {
  error_reporting(E_ALL);
  ini_set('display_errors', 1);
 } else {
  error_reporting(0);
  ini_set('display_errors', 0);
 }
?>

 

Transform Text Links Into Anchors

Using the strip_tags() function on any user generated input should be common practice in order to stop users putting in odd bits of HTML and messing up your nicely coded HTML. You might want to allow anchor tags to be used, which is fine, but some users might use this to include onmouseover and other events in order to run JavaScript annoyances on the page.

So after stripping all tags from your text you can then run the following function to turn any links into anchor elements. This will work with any plain text that you want to use it on.