Guest User

Untitled

a guest
Jan 12th, 2018
340
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.28 KB | None | 0 0
  1. <?php
  2. $files = 'Thu Dec 11 17:53:01 PST 2008 a@facebook.com b@facebook.com
  3. Thu Dec 11 17:53:02 PST 2008 b@facebook.com a@facebook.com
  4. Thu Dec 11 17:53:03 PST 2008 a@facebook.com e@facebook.com
  5. Thu Dec 11 17:53:04 PST 2008 e@facebook.com a@facebook.com
  6. Thu Dec 11 17:53:05 PST 2008 e@facebook.com d@facebook.com
  7. Thu Dec 11 17:53:06 PST 2008 d@facebook.com e@facebook.com
  8. Thu Dec 11 17:53:04 PST 2008 d@facebook.com a@facebook.com
  9. Thu Dec 11 17:53:04 PST 2008 a@facebook.com d@facebook.com
  10. Thu Dec 11 17:53:04 PST 2008 b@facebook.com d@facebook.com
  11. Thu Dec 11 17:53:04 PST 2008 d@facebook.com b@facebook.com
  12. Thu Dec 11 17:53:04 PST 2008 b@facebook.com c@facebook.com
  13. Thu Dec 11 17:53:04 PST 2008 c@facebook.com b@facebook.com
  14. ';
  15.  
  16. $file = 'Thu Dec 11 17:53:01 PST 2008 a@facebook.com b@facebook.com
  17. Thu Dec 11 17:53:02 PST 2008 b@facebook.com a@facebook.com
  18. Thu Dec 11 17:53:03 PST 2008 a@facebook.com c@facebook.com
  19. Thu Dec 11 17:53:04 PST 2008 c@facebook.com a@facebook.com
  20. Thu Dec 11 17:53:05 PST 2008 b@facebook.com c@facebook.com
  21. Thu Dec 11 17:53:06 PST 2008 c@facebook.com b@facebook.com
  22. Thu Dec 11 17:53:07 PST 2008 d@facebook.com e@facebook.com
  23. Thu Dec 11 17:53:08 PST 2008 e@facebook.com d@facebook.com
  24. Thu Dec 11 17:53:09 PST 2008 d@facebook.com f@facebook.com
  25. Thu Dec 11 17:53:10 PST 2008 f@facebook.com d@facebook.com
  26. Thu Dec 11 17:53:11 PST 2008 e@facebook.com f@facebook.com
  27. Thu Dec 11 17:53:12 PST 2008 f@facebook.com e@facebook.com
  28. ';
  29.  
  30. $logs = explode("\n", $file);
  31.  
  32. $interaction = array();
  33. foreach( $logs as $key )
  34. {
  35. if( preg_match( '/(.*?)\\s+([\\w-+]+(?:\\.[\\w-+]+)*@(?:[\\w-]+\\.)+[a-zA-Z]{2,7})\\s+([\\w-+]+(?:\\.[\\w-+]+)*@(?:[\\w-]+\\.)+[a-zA-Z]{2,7})/i', $key, $matches ) )
  36. {
  37. if( empty( $interaction[ $matches[2] ] ) ) $interaction[ $matches[2] ] = array( $matches[2] );
  38.  
  39. $interaction[ $matches[2] ][ $matches[3] ] = $matches[3];
  40. }
  41. }
  42.  
  43. $clusters = $count = array();
  44. $i = 0;
  45.  
  46. foreach( $interaction as $key => $value )
  47. {
  48. if( count( $value ) < 3 )
  49. {
  50. unset( $interaction[ $key ] );
  51. }
  52.  
  53. foreach( $value as $keys )
  54. {
  55. if( empty( $interaction[ $keys ] ) || count( $interaction[ $keys ] ) < 3 )
  56. {
  57. unset( $interaction[ $key ][ $keys ] );
  58. }
  59. }
  60.  
  61. $clusters[ $key ] = array();
  62.  
  63. unset( $value[0] );
  64.  
  65. $clusters[ $key ] = buildClusterTree( $value, array( $key ), $key, 0, $key );
  66. }
  67.  
  68. $clusterArray = array();
  69. foreach( $count as $key => $value )
  70. {
  71. $clusterArray[ $key ] = $value[ $key ];
  72.  
  73. foreach( $value as $keys => $values )
  74. {
  75. $counts[ $key ][ $keys ] = $keys;
  76. }
  77. }
  78.  
  79. $finalClusters = $location = array();
  80. $i = 0;
  81. foreach( $clusterArray as $key => $value )
  82. {
  83. if( $value >= 2 )
  84. {
  85. $finalClusters[ $i ] = $counts[$key];
  86.  
  87. foreach( $counts[$key] as $keys )
  88. {
  89. $location[ $keys ][ $i ] = $i;
  90. }
  91. }
  92.  
  93. ++$i;
  94. }
  95.  
  96. $heighest = 0;
  97.  
  98. $amount = array();
  99. foreach( $location as $key => $value )
  100. {
  101. foreach( $value as $keys => $values )
  102. {
  103. $amount[$key][ count( $finalClusters[ $values ] ) ] = $values;
  104. }
  105. }
  106.  
  107. $finalCl = array();
  108.  
  109. function maxValue( $array )
  110. {
  111. $max = current( $array );
  112.  
  113. foreach( $array as $key => $value )
  114. {
  115. if( $value > $max )
  116. {
  117. $max = $value;
  118. }
  119. }
  120.  
  121. return $max;
  122. }
  123.  
  124.  
  125. foreach( $amount as $key => $value )
  126. {
  127. $max = maxValue( array_flip( $value ) );
  128.  
  129. foreach( $value as $amounts => $id )
  130. {
  131. if( $amounts == $max )
  132. {
  133. $finalCl[ $id ][ $key ] = $key;
  134. }
  135. }
  136. }
  137.  
  138. foreach( $finalCl as $key => $value )
  139. {
  140. sort( $value );
  141. if( count( $value ) < 3 )
  142. {
  143. unset( $finalCl[ $key ] );
  144. } else {
  145. echo implode( ',', $value ) . "\n";
  146. }
  147. }
  148.  
  149. function buildClusterTree( $cluster, $ignore, $parent, $depth, $initial )
  150. {
  151. global $interaction, $count;
  152.  
  153. $clusters = array();
  154.  
  155. foreach( $cluster as $key => $value )
  156. {
  157. if( in_array( $value, $ignore ) === false )
  158. {
  159. $ignore[] = $value;
  160. $clusters[ $value ] = buildClusterTree( $interaction[$value], $ignore, $key, ++$depth, $initial );
  161. } else {
  162. if( $parent != $value ) $clusters[ $value ] = array();
  163.  
  164. if( empty( $count[ $initial ][ $value ] ) ) $count[ $initial ][ $value ] = 1; else $count[ $initial ][ $value ]++;
  165. }
  166. }
  167.  
  168. return $clusters;
  169. }
Add Comment
Please, Sign In to add comment