本文整理汇总了PHP中File_Archive::predPreg方法的典型用法代码示例。如果您正苦于以下问题:PHP File_Archive::predPreg方法的具体用法?PHP File_Archive::predPreg怎么用?PHP File_Archive::predPreg使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类File_Archive
的用法示例。
在下文中一共展示了File_Archive::predPreg方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: _readSource
/**
* This function performs exactly as readSource, but with two additional parameters
* ($reachable and $baseDir) that will be set so that $reachable."/".$baseDir == $URL
* and $reachable can be reached (in case of error)
*
* @access private
*/
function _readSource(&$toConvert, $URL, &$reachable, &$baseDir, $symbolic = null, $uncompression = 0, $directoryDepth = -1)
{
$source =& File_Archive::_convertToReader($toConvert);
if (PEAR::isError($source)) {
return $source;
}
if (is_array($URL)) {
$converted = array();
foreach ($URL as $key => $foo) {
$converted[] =& File_Archive::_convertToReader($URL[$key]);
}
return File_Archive::readMulti($converted);
}
//No need to uncompress more than $directoryDepth
//That's not perfect, and some archives will still be uncompressed just
//to be filtered out :(
if ($directoryDepth >= 0) {
$uncompressionLevel = min($uncompression, $directoryDepth);
} else {
$uncompressionLevel = $uncompression;
}
require_once 'File/Archive/Reader.php';
$std = File_Archive_Reader::getStandardURL($URL);
//Modify the symbolic name if necessary
$slashPos = strrpos($std, '/');
if ($symbolic === null) {
if ($slashPos === false) {
$realSymbolic = $std;
} else {
$realSymbolic = substr($std, $slashPos + 1);
}
} else {
$realSymbolic = $symbolic;
}
if ($slashPos !== false) {
$baseFile = substr($std, 0, $slashPos + 1);
$lastFile = substr($std, $slashPos + 1);
} else {
$baseFile = '';
$lastFile = $std;
}
if (strpos($lastFile, '*') !== false || strpos($lastFile, '?') !== false) {
//We have to build a regexp here
$regexp = str_replace(array('\\*', '\\?'), array('[^/]*', '[^/]'), preg_quote($lastFile));
$result = File_Archive::_readSource($source, $baseFile, $reachable, $baseDir, null, 0, -1);
return File_Archive::filter(File_Archive::predPreg('/^' . $regexp . '$/'), $result);
}
//If the URL can be interpreted as a directory, and we are reading from the file system
if ((empty($URL) || is_dir($URL)) && $source === null) {
require_once "File/Archive/Reader/Directory.php";
if ($uncompressionLevel != 0) {
require_once "File/Archive/Reader/Uncompress.php";
$result = new File_Archive_Reader_Uncompress(new File_Archive_Reader_Directory($std, '', $directoryDepth), $uncompressionLevel);
} else {
$result = new File_Archive_Reader_Directory($std, '', $directoryDepth);
}
if ($directoryDepth >= 0) {
require_once 'File/Archive/Reader/Filter.php';
require_once 'File/Archive/Predicate/MaxDepth.php';
$tmp =& File_Archive::filter(new File_Archive_Predicate_MaxDepth($directoryDepth), $result);
unset($result);
$result =& $tmp;
}
if (!empty($realSymbolic)) {
if ($symbolic === null) {
$realSymbolic = '';
}
require_once "File/Archive/Reader/ChangeName/AddDirectory.php";
$tmp = new File_Archive_Reader_ChangeName_AddDirectory($realSymbolic, $result);
unset($result);
$result =& $tmp;
}
//If the URL can be interpreted as a file, and we are reading from the file system
} else {
if (is_file($URL) && substr($URL, -1) != '/' && $source === null) {
require_once "File/Archive/Reader/File.php";
$result = new File_Archive_Reader_File($URL, $realSymbolic);
//Else, we will have to build a complex reader
} else {
require_once "File/Archive/Reader/File.php";
$realPath = $std;
// Try to find a file with a known extension in the path (
// (to manage URLs like archive.tar/directory/file)
$pos = 0;
do {
if ($pos + 1 < strlen($realPath)) {
$pos = strpos($realPath, '/', $pos + 1);
} else {
$pos = false;
}
if ($pos === false) {
$pos = strlen($realPath);
}
//.........这里部分代码省略.........