Home > Articles > Programming > PHP

  • Print
  • + Share This
This chapter is from the book

This chapter is from the book

Sorting IP Addresses (as a Human Would)

natsort($a);
<?php
  $a = array('100.200.300.400', '100.50.60.70', '100.8.9.0');
  natsort($a);
  echo implode(' < ', $a);
?>

Sorting IP Addresses Using a Natural String Order String Comparison (natsort.php)

Sorting IP addresses with sort() does not really work because if sorting as strings, '100.200.300.400' (which intentionally is an invalid IP) is less than '50.60.70.80'. In addition, there are more than just digits within the string, so a numeric sorting does not work.

What is needed in this case is a so-called natural sorting, something that has been implemented by Martin Pool’s Natural Order String Comparison project at http://sourcefrog.net/projects/natsort/. In PHP’s natcasesort() function, this algorithm is used. According to the description, it sorts “as a human would.” When case sensitivity is an issue, natsort() can be used. The preceding code shows the latter function.

  • + Share This
  • 🔖 Save To Your Account