Sorting IP Addresses (as a Human Would)


 natsort($a); 


Sorting IP addresses with sort() does not really work because if sorting as strings, '100.200.300.400' is less than '50.60.70.80' (and not even a valid IP address, but this is not the point here). In addition, there are more than just digits within the string, so a numerical sorting does not work.

Sorting IP Addresses Using a Natural Order String Comparison (natsort.php)
 <?php   $a = array('100.200.300.400', '100.50.60.70',     '100.8.9.0');   natsort($a);   echo implode(' < ', $a); ?> 

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.

NOTE

Internally, natsort() uses strnatcmp() (and natcasesort() uses strnatcasecmp()), which does a "natural" comparison of two strings. By calling this function a number of times, the array elements are brought into the correct order.





PHP Phrasebook
PHP Phrasebook
ISBN: 0672328178
EAN: 2147483647
Year: 2005
Pages: 193

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net