WordPress at a glance
function is not described

PclZipUtilPathInclusion() WP 1.0

Function : PclZipUtilPathInclusion() Description : This function indicates if the path $p_path is under the $p_dir tree. Or, said in an other way, if the file or sub-dir $p_path is inside the dir $p_dir. The function indicates also if the path is exactly the same as the dir. This function supports path with duplicated '/' like '//', but does not support '.' or '..' statements. Parameters : Return Values :
0 if $p_path is not inside directory $p_dir
1 if $p_path is inside directory $p_dir
2 if $p_path is exactly the same as $p_dir

No Hooks.

Return

Nothing (null).

Usage

PclZipUtilPathInclusion( $p_dir, $p_path );

Code of PclZipUtilPathInclusion: wp-admin/includes/class-pclzip.php VER 5.1.1

<?php
function PclZipUtilPathInclusion($p_dir, $p_path)
{
  $v_result = 1;

  // ----- Look for path beginning by ./
  if (   ($p_dir == '.')
      || ((strlen($p_dir) >=2) && (substr($p_dir, 0, 2) == './'))) {
    $p_dir = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr($p_dir, 1);
  }
  if (   ($p_path == '.')
      || ((strlen($p_path) >=2) && (substr($p_path, 0, 2) == './'))) {
    $p_path = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr($p_path, 1);
  }

  // ----- Explode dir and path by directory separator
  $v_list_dir = explode("/", $p_dir);
  $v_list_dir_size = sizeof($v_list_dir);
  $v_list_path = explode("/", $p_path);
  $v_list_path_size = sizeof($v_list_path);

  // ----- Study directories paths
  $i = 0;
  $j = 0;
  while (($i < $v_list_dir_size) && ($j < $v_list_path_size) && ($v_result)) {

    // ----- Look for empty dir (path reduction)
    if ($v_list_dir[$i] == '') {
      $i++;
      continue;
    }
    if ($v_list_path[$j] == '') {
      $j++;
      continue;
    }

    // ----- Compare the items
    if (($v_list_dir[$i] != $v_list_path[$j]) && ($v_list_dir[$i] != '') && ( $v_list_path[$j] != ''))  {
      $v_result = 0;
    }

    // ----- Next items
    $i++;
    $j++;
  }

  // ----- Look if everything seems to be the same
  if ($v_result) {
    // ----- Skip all the empty items
    while (($j < $v_list_path_size) && ($v_list_path[$j] == '')) $j++;
    while (($i < $v_list_dir_size) && ($v_list_dir[$i] == '')) $i++;

    if (($i >= $v_list_dir_size) && ($j >= $v_list_path_size)) {
      // ----- There are exactly the same
      $v_result = 2;
    }
    else if ($i < $v_list_dir_size) {
      // ----- The path is shorter than the dir
      $v_result = 0;
    }
  }

  // ----- Return
  return $v_result;
}