<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: Troelskn's Code Snippets</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Sat, 26 Jul 2008 00:42:06 GMT</pubDate>
    <description>DZone Snippets: Troelskn's Code Snippets</description>
    <item>
      <title>Recursively find files by filename pattern.</title>
      <link>http://snippets.dzone.com/posts/show/4147</link>
      <description>Scans a directory, and all subdirectories for files, matching a regular expression. Each match is sent to the callback provided as third argument. A simple example:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;function my_handler($filename) {&lt;br /&gt;  echo $filename . "\n";&lt;br /&gt;}&lt;br /&gt;find_files('c:/', '/php$/', 'my_handler');&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;And the actual snippet&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;function find_files($path, $pattern, $callback) {&lt;br /&gt;  $path = rtrim(str_replace("\\", "/", $path), '/') . '/';&lt;br /&gt;  $matches = Array();&lt;br /&gt;  $entries = Array();&lt;br /&gt;  $dir = dir($path);&lt;br /&gt;  while (false !== ($entry = $dir-&gt;read())) {&lt;br /&gt;    $entries[] = $entry;&lt;br /&gt;  }&lt;br /&gt;  $dir-&gt;close();&lt;br /&gt;  foreach ($entries as $entry) {&lt;br /&gt;    $fullname = $path . $entry;&lt;br /&gt;    if ($entry != '.' &amp;&amp; $entry != '..' &amp;&amp; is_dir($fullname)) {&lt;br /&gt;      find_files($fullname, $pattern, $callback);&lt;br /&gt;    } else if (is_file($fullname) &amp;&amp; preg_match($pattern, $entry)) {&lt;br /&gt;      call_user_func($callback, $fullname);&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 15 Jun 2007 13:17:56 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4147</guid>
      <author>troelskn (Troels)</author>
    </item>
    <item>
      <title>Calculate all combinations (permutations)</title>
      <link>http://snippets.dzone.com/posts/show/3545</link>
      <description>Calculates all combinations, including incomplete results.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;combine([1,2]) == [[1], [2], [1,2]];&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;var combine = function(a) {&lt;br /&gt;  var fn = function(n, src, got, all) {&lt;br /&gt;    if (n == 0) {&lt;br /&gt;      if (got.length &gt; 0) {&lt;br /&gt;        all[all.length] = got;&lt;br /&gt;      }&lt;br /&gt;      return;&lt;br /&gt;    }&lt;br /&gt;    for (var j = 0; j &lt; src.length; j++) {&lt;br /&gt;      fn(n - 1, src.slice(j + 1), got.concat([src[j]]), all);&lt;br /&gt;    }&lt;br /&gt;    return;&lt;br /&gt;  }&lt;br /&gt;  var all = [];&lt;br /&gt;  for (var i=0; i &lt; a.length; i++) {&lt;br /&gt;    fn(i, a, [], all);&lt;br /&gt;  }&lt;br /&gt;  all.push(a);&lt;br /&gt;  return all;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Mon, 19 Feb 2007 12:51:44 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3545</guid>
      <author>troelskn (Troels)</author>
    </item>
  </channel>
</rss>
