Измените скрипт PHP на файл печати для каждой строки 2000 из массива - PullRequest
1 голос
/ 24 марта 2012

Мне нужна помощь, чтобы все заработало так, как я хочу.

Я пытаюсь преобразовать easylist.txt в определенный формат Json и импортировать его в мой Untangle Firewall.

Ниже приведен PHP-скрипт, который я запускаю для его преобразования.Проблема в том, что при импорте существует ограничение в 2000 строк.Поэтому мне нужно, чтобы создать файл экспорта для каждой строки 2000.и делать столько файлов, сколько нужно.

Предполагается любая помощь в этом вопросе.

Спасибо WebFooL

<?php
$Content = "./easylist.txt"; 
$lines = file($Content); 
$vJsonFileName = "AD-Blocker". ".json"; 
$badcharacters = array("#",'"', "'", "[", "]", "\n", "\t"); 
header("Content-type: application/json"); 
header("Content-Disposition: attachment; filename=$vJsonFileName");
header('Cache-Control: public');
echo "["; 
foreach($lines as $str){ 
$cleanstr = str_replace($badcharacters, "", $str);
echo '{"enabled":true,"string":"'.$cleanstr.'","javaClass":"com.untangle.uvm.node.GenericRule"},'; 
}
echo "]"; 
?>

Ответы [ 2 ]

0 голосов
/ 24 марта 2012

Вы не можете загрузить несколько файлов, поэтому следующее создаст несколько файлов.Здесь есть сообщение о архивировании файлов: Как [рекурсивно] сжать каталог в PHP?

<?php
$Content = "./easylist.txt"; 
$lines = file($Content); 
$vJsonFileName = "AD-Blocker.zip"; 
$badcharacters = array("#",'"', "'", "[", "]", "\n", "\t"); 
$f = 1;
foreach($lines as $str)
{
    $c++;
    if($c==2000)
    {
        $f++;
    }
    $cleanstr = str_replace($badcharacters, "", $str);
    $json[$f] = '{"enabled":true,"string":"'.$cleanstr.'","javaClass":"com.untangle.uvm.node.GenericRule"},'; 
}

foreach($json as $f => $arr)
{
    file_put_contents('file'.$f,'['.implode('',$arr).']');
}


//zip up all the files here to $vJsonFileName


header("Content-type: application/json"); 
header("Content-Disposition: attachment; filename=$vJsonFileName");
header('Cache-Control: public');
?>
0 голосов
/ 24 марта 2012

Предполагая, что вы можете просто произвольно разделить входные данные (то есть, чтобы записи не занимали несколько строк, а каждая строка является «атомарной»), тогда вы можете просто извлечь нужное количество строк

$Content = "./easylist.txt"; 
$lines = file($Content); 
$linesSplit = array_chunk( $lines, 2000 );

Кстати, вам действительно нужно удалить "плохих персонажей"?Вы исследовали, используя json_encode ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...