Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- $files = 'Thu Dec 11 17:53:01 PST 2008 a@facebook.com b@facebook.com
- Thu Dec 11 17:53:02 PST 2008 b@facebook.com a@facebook.com
- Thu Dec 11 17:53:03 PST 2008 a@facebook.com e@facebook.com
- Thu Dec 11 17:53:04 PST 2008 e@facebook.com a@facebook.com
- Thu Dec 11 17:53:05 PST 2008 e@facebook.com d@facebook.com
- Thu Dec 11 17:53:06 PST 2008 d@facebook.com e@facebook.com
- Thu Dec 11 17:53:04 PST 2008 d@facebook.com a@facebook.com
- Thu Dec 11 17:53:04 PST 2008 a@facebook.com d@facebook.com
- Thu Dec 11 17:53:04 PST 2008 b@facebook.com d@facebook.com
- Thu Dec 11 17:53:04 PST 2008 d@facebook.com b@facebook.com
- Thu Dec 11 17:53:04 PST 2008 b@facebook.com c@facebook.com
- Thu Dec 11 17:53:04 PST 2008 c@facebook.com b@facebook.com
- ';
- $file = 'Thu Dec 11 17:53:01 PST 2008 a@facebook.com b@facebook.com
- Thu Dec 11 17:53:02 PST 2008 b@facebook.com a@facebook.com
- Thu Dec 11 17:53:03 PST 2008 a@facebook.com c@facebook.com
- Thu Dec 11 17:53:04 PST 2008 c@facebook.com a@facebook.com
- Thu Dec 11 17:53:05 PST 2008 b@facebook.com c@facebook.com
- Thu Dec 11 17:53:06 PST 2008 c@facebook.com b@facebook.com
- Thu Dec 11 17:53:07 PST 2008 d@facebook.com e@facebook.com
- Thu Dec 11 17:53:08 PST 2008 e@facebook.com d@facebook.com
- Thu Dec 11 17:53:09 PST 2008 d@facebook.com f@facebook.com
- Thu Dec 11 17:53:10 PST 2008 f@facebook.com d@facebook.com
- Thu Dec 11 17:53:11 PST 2008 e@facebook.com f@facebook.com
- Thu Dec 11 17:53:12 PST 2008 f@facebook.com e@facebook.com
- ';
- $logs = explode("\n", $file);
- $interaction = array();
- foreach( $logs as $key )
- {
- if( preg_match( '/(.*?)\\s+([\\w-+]+(?:\\.[\\w-+]+)*@(?:[\\w-]+\\.)+[a-zA-Z]{2,7})\\s+([\\w-+]+(?:\\.[\\w-+]+)*@(?:[\\w-]+\\.)+[a-zA-Z]{2,7})/i', $key, $matches ) )
- {
- if( empty( $interaction[ $matches[2] ] ) ) $interaction[ $matches[2] ] = array( $matches[2] );
- $interaction[ $matches[2] ][ $matches[3] ] = $matches[3];
- }
- }
- $clusters = $count = array();
- $i = 0;
- foreach( $interaction as $key => $value )
- {
- if( count( $value ) < 3 )
- {
- unset( $interaction[ $key ] );
- }
- foreach( $value as $keys )
- {
- if( empty( $interaction[ $keys ] ) || count( $interaction[ $keys ] ) < 3 )
- {
- unset( $interaction[ $key ][ $keys ] );
- }
- }
- $clusters[ $key ] = array();
- unset( $value[0] );
- $clusters[ $key ] = buildClusterTree( $value, array( $key ), $key, 0, $key );
- }
- $clusterArray = array();
- foreach( $count as $key => $value )
- {
- $clusterArray[ $key ] = $value[ $key ];
- foreach( $value as $keys => $values )
- {
- $counts[ $key ][ $keys ] = $keys;
- }
- }
- $finalClusters = $location = array();
- $i = 0;
- foreach( $clusterArray as $key => $value )
- {
- if( $value >= 2 )
- {
- $finalClusters[ $i ] = $counts[$key];
- foreach( $counts[$key] as $keys )
- {
- $location[ $keys ][ $i ] = $i;
- }
- }
- ++$i;
- }
- $heighest = 0;
- $amount = array();
- foreach( $location as $key => $value )
- {
- foreach( $value as $keys => $values )
- {
- $amount[$key][ count( $finalClusters[ $values ] ) ] = $values;
- }
- }
- $finalCl = array();
- function maxValue( $array )
- {
- $max = current( $array );
- foreach( $array as $key => $value )
- {
- if( $value > $max )
- {
- $max = $value;
- }
- }
- return $max;
- }
- foreach( $amount as $key => $value )
- {
- $max = maxValue( array_flip( $value ) );
- foreach( $value as $amounts => $id )
- {
- if( $amounts == $max )
- {
- $finalCl[ $id ][ $key ] = $key;
- }
- }
- }
- foreach( $finalCl as $key => $value )
- {
- sort( $value );
- if( count( $value ) < 3 )
- {
- unset( $finalCl[ $key ] );
- } else {
- echo implode( ',', $value ) . "\n";
- }
- }
- function buildClusterTree( $cluster, $ignore, $parent, $depth, $initial )
- {
- global $interaction, $count;
- $clusters = array();
- foreach( $cluster as $key => $value )
- {
- if( in_array( $value, $ignore ) === false )
- {
- $ignore[] = $value;
- $clusters[ $value ] = buildClusterTree( $interaction[$value], $ignore, $key, ++$depth, $initial );
- } else {
- if( $parent != $value ) $clusters[ $value ] = array();
- if( empty( $count[ $initial ][ $value ] ) ) $count[ $initial ][ $value ] = 1; else $count[ $initial ][ $value ]++;
- }
- }
- return $clusters;
- }
Add Comment
Please, Sign In to add comment