I couldn't find an implementation of the Ramer-Douglas-Peucker algorithm in PHP. So I made one myself.
Maybe it's useful to you. It's been tested only at a very basic level - I take no responsibility if it doesn't work correctly. (But any feedback, positive or negative, is welcome - contact details.)
View the source, or download it
License conditions: Public Domain
//example usage include "rdp.php"; $line = array( 0 => array("E"=> 150,"N" => 10), 1 => array("E" => 200,"N" => 100), 2 => array("E" => 360,"N" => 170), 3 => array("E" => 500,"N" => 280)); //try calling RamerDouglasPeucker() with different values of $epsilon - eg. 10 or 50 $rdpResult = RamerDouglasPeucker($line, 30); var_dump ($rdpResult);