This commit is contained in:
2026-03-08 23:40:18 +07:00
parent 327b2645f2
commit e2189983f6
2201 changed files with 147205 additions and 20310 deletions

112
convert_article.php Normal file
View File

@@ -0,0 +1,112 @@
<?php
// Read the full home.php
$lines = file('c:/Users/tiepb/Downloads/Company/agent_test/data/home/home.php');
$totalLines = count($lines);
// Find "article_home" line
$articleHomeStart = null;
foreach ($lines as $i => $line) {
if (strpos($line, '"article_home"') !== false) {
$articleHomeStart = $i;
break;
}
}
echo "article_home starts at line: " . ($articleHomeStart + 1) . "\n";
// Extract everything from article_home to end (before ");")
$rawSection = implode('', array_slice($lines, $articleHomeStart + 1, $totalLines - $articleHomeStart - 2));
echo "Raw section length: " . strlen($rawSection) . "\n";
// Find all category keys with their positions
preg_match_all('/^ *(\d+) *=>\s*\n/m', $rawSection, $matches, PREG_OFFSET_CAPTURE);
echo "Category keys found: ";
foreach ($matches[1] as $m) {
echo $m[0] . " ";
}
echo "\n";
// Build sections
$catKeys = [];
$catPositions = [];
foreach ($matches[1] as $i => $m) {
$catKeys[] = (int)$m[0];
// Find the [ after this position
$afterHeader = $matches[0][$i][1] + strlen($matches[0][$i][0]);
$catPositions[] = $afterHeader;
}
$sections = [];
for ($i = 0; $i < count($catKeys); $i++) {
$start = $catPositions[$i];
$end = isset($catPositions[$i+1]) ? $catPositions[$i+1] - strlen($matches[0][$i+1][0]) : strlen($rawSection);
$chunk = trim(substr($rawSection, $start, $end - $start));
$data = json_decode($chunk, true);
if (json_last_error() === JSON_ERROR_NONE) {
$sections[$catKeys[$i]] = $data;
echo "Category " . $catKeys[$i] . ": " . count($data) . " articles\n";
} else {
echo "Category " . $catKeys[$i] . ": JSON ERROR - " . json_last_error_msg() . "\n";
// Show first 200 chars of chunk
echo "Chunk: " . substr($chunk, 0, 200) . "\n";
}
}
if (empty($sections)) {
echo "No sections parsed, exiting\n";
exit(1);
}
// Helper function to export value as PHP array
function phpExport($val, $indent = 0) {
$pad = str_repeat(' ', $indent);
$padInner = str_repeat(' ', $indent + 1);
if (is_null($val)) return 'NULL';
if (is_bool($val)) return $val ? 'true' : 'false';
if (is_int($val)) return (string)$val;
if (is_float($val)) return (string)$val;
if (is_string($val)) {
$escaped = str_replace("\\", "\\\\", $val);
$escaped = str_replace("'", "\\'", $escaped);
return "'" . $escaped . "'";
}
if (is_array($val)) {
if (empty($val)) return "array (\n$pad)";
$items = [];
foreach ($val as $k => $v) {
$keyStr = is_int($k) ? "$k => " : "'" . addcslashes($k, "'\\") . "' => ";
$items[] = $padInner . $keyStr . phpExport($v, $indent + 1);
}
return "array (\n" . implode(",\n", $items) . ",\n$pad)";
}
return var_export($val, true);
}
// Keep lines 1 to articleHomeStart (0-indexed = lines 1..articleHomeStart)
$header = implode('', array_slice($lines, 0, $articleHomeStart));
// Build article_home PHP array
$output = $header;
$output .= " 'article_home' => \n";
$output .= " array (\n";
foreach ($sections as $catId => $articles) {
$output .= " $catId => \n";
$output .= " array (\n";
foreach ($articles as $idx => $article) {
$output .= " $idx => \n";
$output .= " " . phpExport($article, 3) . ",\n";
}
$output .= " ),\n";
}
$output .= " ),\n";
$output .= ");\n";
file_put_contents('c:/Users/tiepb/Downloads/Company/agent_test/data/home/home.php', $output);
echo "Done! Written " . strlen($output) . " bytes\n";
$result = shell_exec('php -l "c:/Users/tiepb/Downloads/Company/agent_test/data/home/home.php" 2>&1');
echo "PHP syntax: $result\n";