getAll("select * from artists"); * sort_unprefix($data, 'name'); */ $_prefix_ignore = array( array('l' => 2, 's' => 'a '), array('l' => 3, 's' => 'an '), array('l' => 4, 's' => 'the '), array('l' => 3, 's' => 'la '), array('l' => 3, 's' => 'le '), array('l' => 2, 's' => "l'") ); function unprefix($str) { global $_prefix_ignore; $start = 0; foreach ($_prefix_ignore as $p) { if (!strncasecmp($p['s'], $str, $p['l'])) { $start += $p['l']; break; } } return substr($str, $start); } function sort_unprefix(&$array, $key = '', $index = false) { if (!$key) { if ($index) { uasort($array, 'sort_unprefix_uasort'); } else { usort($array, 'sort_unprefix_uasort'); } } else { $cmp_define = " \$a = unprefix(\$a['$key']); \$b = unprefix(\$b['$key']); return strcasecmp(\$a, \$b); "; $cmp = create_function('$a, $b', $cmp_define); if ($index) { uasort($array, $cmp); } else { usort($array, $cmp); } } } function sort_unprefix_uasort($a, $b) { $a = unprefix($a); $b = unprefix($b); return strcasecmp($a, $b); } ?>