Britney Spears has gone Drupal :) Drupal seems particularly popular with websites for places like Sony, MTV, music publishers and such, where a lot of websites have to be developed fast with good social and CMS features, which is exactly what Drupal excels at. Drupal keeps rocking and speeding forward, increasing in popularity, and Dries continues to stay calm as a zen monk in the middle of this storm.

Matt on paid links in templates: “Two years ago I made one of the biggest mistakes of my life when I made
a decision to accept a “sponsorship” on WordPress.org without
considering the ramifications it would have for its users, our
community, and the web as a whole. It pains me to see others going down
a similar path.”

A PHP function for SEO-happy titles

This is a simple PHP function (two functions actually) that I wrote that generates SEO-happy URL fragments. This way, you can have /something/its-a-title/ instead of /something/19828/ in your URL’s. You’ll have to call the function to generate a URL path and store that in the database with your object every time you add an object. It uses dashes instead of underscores because historically they’ve been better for SEO, although that seems to be changing. Feel free to use this function any way you want. I’m sure it could be improved btw, my PHP skills are of the “it works but it ain’t necessarily pretty” variety.

The function lets you add in a tablename and field that it will use to make sure that the url string it generates is unique.

It uses a “clean()” function in the beginning that just cleans up the text, you can remove that or replace it with your own function.

The second function especially is kinda cheapo, but it works and I’m too lazy to improve it.

/**
* Recursive function that generates a unique "this-is-the-title123" string for use in URL.
* Checks optionally against $table and $field and the array $forbidden to make sure it's unique.
* Usage: the resulting string should be saved in the db with the object.
*/
function seo_titleinurl_generate($title, $forbidden = FALSE, $table = FALSE, $field = FALSE)
{
## 1. parse $title
$title = clean($title, "oneline"); // remove tags and such 0)
{
// already taken. So recursively adjust $title and try again.
$title = append_increasing_number($title);
$title = seo_titleinurl_generate($title, $forbidden, $table, $field);
}
}

## 3. check against $forbidden array
if ($forbidden)
{
while (list ($key, $val) = each($forbidden))
{
// $val is the forbidden string
if ($title == $val)
{
$title = append_increasing_number($title);
$title = seo_titleinurl_generate($title, $forbidden, $table, $field);
}
}
}
return $title;
}

/**
* Function that appends an increasing number to a string, for example "peter" becomes "peter1" and "peter129" becomes "peter130".
* (To improve, this function could be made recursive to deal with numbers over 99999.)
*/
function append_increasing_number($title)
{
##. 1. Find number at end of string.
$last1 = substr($title, strlen($title)-1, 1);
$last2 = substr($title, strlen($title)-2, 2);
$last3 = substr($title, strlen($title)-3, 3);
$last4 = substr($title, strlen($title)-4, 4);
$last5 = substr($title, strlen($title)-5, 5); // up to 5 numbers (ie. 99999)

if (is_numeric($last5))
{
$last5++; // +1
$title = substr($title, 0, strlen($title)-5) . $last5;
} elseif (is_numeric($last4))
{
$last4++; // +1
$title = substr($title, 0, strlen($title)-4) . $last4;
} elseif (is_numeric($last3))
{
$last3++; // +1
$title = substr($title, 0, strlen($title)-3) . $last3;
} elseif (is_numeric($last2))
{
$last2++; // +1
$title = substr($title, 0, strlen($title)-2) . $last2;
} elseif (is_numeric($last1))
{
$last1++; // +1
$title = substr($title, 0, strlen($title)-1) . $last1;
} else
{
$title = $title . "1"; // append '1'
}

return $title;
}