在下面的代码中,有两个变量来自mysql数据库,它们与几个txt文件的内容进行比较,包含变量的txt文件输出到我的页面。折叠也很精彩。 现在这是我的两个问题。 除了内容之外,代码还指出了txt文件的路径,我不知道如何隐藏它。已经在这里花了几个小时尝试,但遗憾的是没有结果。
其次,变量$ title已包含ä,ö或ü。 然后代码不再起作用了!
有人能帮帮我吗?
<?php
/**
* Searches for lines matching all regexp patterns.
*
* @param string $dir Path to directory with text files
* @param array $patterns AWK patterns without regexp markers ('/')
* @return array Files matching all patterns
* @throws InvalidArgumentException
*/
function grepDir($dir, array $patterns, callable $callback) {
if (!$patterns) {
throw new InvalidArgumentException("Invalid patterns");
}
// Build command as awk '/pattern1/ && /pattern2/ && ... path-to-file'
$awk_script = '/' . implode('/ && /', $patterns) . '/';
$awk_script = escapeshellarg($awk_script);
$command_format = "awk $awk_script %s";
try {
$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));
$it->rewind();
while ($it->valid()) {
if (!$it->isDot()) {
$file_path = $it->key();
$command = sprintf($command_format, $file_path);
$output = null;
exec($command, $output, $exit_status);
if ($exit_status) {
trigger_error("Command failed: $command");
continue;
}
if ($output) {
$callback($file_path, $output);
}
}
$it->next();
}
} catch (Exception $e) {
trigger_error($e->getMessage());
return false;
}
return true;
}
$title = $this->item->title;
$ergebnis = $extraField->value;
$dir = './webtt_alt/daten';
$patterns = [ $title , $ergebnis ];
grepDir($dir, $patterns, function ($file_path, array $output) {
printf("%s\n\n%s\n\n", $file_path, implode(PHP_EOL, $output));
});
?>