fork(2) download
  1. <?php
  2.  
  3. $haystack = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ipsum lorem dolor Curabitur ac risus nunc. Dolor ipsum lorem.';
  4. $needle = 'Lorem ipsum dolor';
  5.  
  6. $hayWords = str_word_count(
  7. strtolower($haystack),
  8. 1
  9. );
  10. $needleWords = str_word_count(
  11. strtolower($needle),
  12. 1
  13. );
  14. $needleWordsCount = count($needleWords);
  15.  
  16. $foundWords = array_intersect(
  17. $hayWords,
  18. $needleWords
  19. );
  20.  
  21. $count = array_reduce(
  22. array_keys($foundWords),
  23. function($counter, $item) use ($foundWords, $needleWordsCount) {
  24. for($i = $item; $i < $item + $needleWordsCount; ++$i) {
  25. if (!isset($foundWords[$i]))
  26. return $counter;
  27. }
  28. return ++$counter;
  29. },
  30. 0
  31. );
  32.  
  33. var_dump($count);
  34.  
  35. ?>
Success #stdin #stdout 0.01s 20568KB
stdin
Standard input is empty
stdout
int(3)
array(17) {
  ["ru_oublock"]=>
  int(0)
  ["ru_inblock"]=>
  int(0)
  ["ru_msgsnd"]=>
  int(0)
  ["ru_msgrcv"]=>
  int(0)
  ["ru_maxrss"]=>
  int(5988)
  ["ru_ixrss"]=>
  int(0)
  ["ru_idrss"]=>
  int(0)
  ["ru_minflt"]=>
  int(2297)
  ["ru_majflt"]=>
  int(0)
  ["ru_nsignals"]=>
  int(0)
  ["ru_nvcsw"]=>
  int(6)
  ["ru_nivcsw"]=>
  int(16)
  ["ru_nswap"]=>
  int(0)
  ["ru_utime.tv_usec"]=>
  int(13997)
  ["ru_utime.tv_sec"]=>
  int(0)
  ["ru_stime.tv_usec"]=>
  int(4999)
  ["ru_stime.tv_sec"]=>
  int(0)
}