function System::cat
Concatenate files
Usage: 1) $var = System::cat('sample.txt test.txt'); 2) System::cat('sample.txt test.txt > final.txt'); 3) System::cat('sample.txt test.txt >> final.txt');
Note: as the class use fopen, urls should work also
Parameters
string $args the arguments:
Return value
boolean true on success
File
-
vendor/
pear/ pear-core-minimal/ src/ System.php, line 323
Class
- System
- System offers cross platform compatible system functions
Code
public static function &cat($args) {
$ret = null;
$files = array();
if (!is_array($args)) {
$args = preg_split('/\\s+/', $args, -1, PREG_SPLIT_NO_EMPTY);
}
$count_args = count($args);
for ($i = 0; $i < $count_args; $i++) {
if ($args[$i] == '>') {
$mode = 'wb';
$outputfile = $args[$i + 1];
break;
}
elseif ($args[$i] == '>>') {
$mode = 'ab+';
$outputfile = $args[$i + 1];
break;
}
else {
$files[] = $args[$i];
}
}
$outputfd = false;
if (isset($mode)) {
if (!($outputfd = fopen($outputfile, $mode))) {
$err = System::raiseError("Could not open {$outputfile}");
return $err;
}
$ret = true;
}
foreach ($files as $file) {
if (!($fd = fopen($file, 'r'))) {
System::raiseError("Could not open {$file}");
continue;
}
while ($cont = fread($fd, 2048)) {
if (is_resource($outputfd)) {
fwrite($outputfd, $cont);
}
else {
$ret .= $cont;
}
}
fclose($fd);
}
if (is_resource($outputfd)) {
fclose($outputfd);
}
return $ret;
}