Quickly made a parser for you:
juegos.txt
<h4>Jogo: Area 51 : teste de : no nome do jogo</h4>
<li>Região: 2 - </li>
<li>Sistema: 8 - Sony PlayStation</li>
<li>Ano: 2003</li>
<li>Publicadoras: 1190 - Midway, 730 - GT Interactive</li>
<li>Desenvolvedora: 1165 - Mesa Logic</li>
<h4>Jogo: Area 52</h4>
<li>Região: 3 - </li>
<li>Sistema: 9 - Sony PlayStation 2</li>
<li>Ano: 2004</li>
<li>Publicadoras: 1191 - Midway, 730 - GT Interactive</li>
<li>Desenvolvedora: 1166 - Mesa Logic</li>
<h4>Jogo: Area 53</h4>
<li>Região: 4 - </li>
<li>Sistema: 10 - Sony PlayStation 3</li>
<li>Ano: 2005</li>
<li>Publicadoras: 1192 - Midway, 730 - GT Interactive</li>
<li>Desenvolvedora: 1167 - Mesa Logic</li>
PHP:
$lines = file('jogos.txt');
$jogos = array();
foreach ($lines as $line_num => $line) {
$line = strip_tags($line);
if (substr($line, 0, 5) == 'Jogo:') $i++;
list($key, $value) = preg_split('/:/', $line, 2);
if ($value) $jogos[$i][$key] = $value;
}
print_r($jogos);
Return:
Array
(
[1] => Array
(
[Jogo] => Area 51 : teste de : no nome do jogo
[Região] => 2 -
[Sistema] => 8 - Sony PlayStation
[Ano] => 2003
[Publicadoras] => 1190 - Midway, 730 - GT Interactive
[Desenvolvedora] => 1165 - Mesa Logic
)
[2] => Array
(
[Jogo] => Area 52
[Região] => 3 -
[Sistema] => 9 - Sony PlayStation 2
[Ano] => 2004
[Publicadoras] => 1191 - Midway, 730 - GT Interactive
[Desenvolvedora] => 1166 - Mesa Logic
)
[3] => Array
(
[Jogo] => Area 53
[Região] => 4 -
[Sistema] => 10 - Sony PlayStation 3
[Ano] => 2005
[Publicadoras] => 1192 - Midway, 730 - GT Interactive
[Desenvolvedora] => 1167 - Mesa Logic
)
)
Now just use the array to generate the insert in the BD ...
Note: I ran a file with 11.5mb, 384257 lines and 54894 records and generated the array in less than 15 seconds.
Example with ID separation:
PHP:
$lines = file('jogos.txt');
$jogos = array();
foreach ($lines as $line_num => $line) {
$line = strip_tags($line);
if (substr($line, 0, 5) == 'Jogo:') ++$i;
list($key, $value) = preg_split('/:/', $line, 2);
$value = trim($value);
if ($value) {
if (strpos($value, '-') !== false) {
if (strpos($value, ',') !== false) {
$j = 0;
foreach(explode(', ', $value) as $item) {
list($id, $str) = preg_split('/ -/', $item, 2);
$str = trim($str);
$jogos[$i][$key][$j]['id_'.$key] = $id;
if ($str) $jogos[$i][$key][$j][$key] = $str;
$j++;
}
} else {
list($id, $str) = preg_split('/ -/', $value, 2);
$str = trim($str);
$jogos[$i]['id_'.$key] = $id;
if ($str) $jogos[$i][$key] = $str;
}
} else {
$jogos[$i][$key] = $value;
}
}
}
Return:
Array
(
[1] => Array
(
[Jogo] => Area 51 : teste de : no nome do jogo
[id_Região] => 2
[id_Sistema] => 8
[Sistema] => Sony PlayStation
[Ano] => 2003
[Publicadoras] => Array
(
[0] => Array
(
[id_Publicadoras] => 1190
[Publicadoras] => Midway
)
[1] => Array
(
[id_Publicadoras] => 730
[Publicadoras] => GT Interactive
)
)
[id_Desenvolvedora] => 1165
[Desenvolvedora] => Mesa Logic
)
[2] => Array
(
[Jogo] => Area 52
[id_Região] => 3
[id_Sistema] => 9
[Sistema] => Sony PlayStation 2
[Ano] => 2004
[Publicadoras] => Array
(
[0] => Array
(
[id_Publicadoras] => 1191
[Publicadoras] => Midway
)
[1] => Array
(
[id_Publicadoras] => 730
[Publicadoras] => GT Interactive
)
)
[id_Desenvolvedora] => 1166
[Desenvolvedora] => Mesa Logic
)
[3] => Array
(
[Jogo] => Area 53
[id_Região] => 4
[id_Sistema] => 10
[Sistema] => Sony PlayStation 3
[Ano] => 2005
[Publicadoras] => Array
(
[0] => Array
(
[id_Publicadoras] => 1192
[Publicadoras] => Midway
)
[1] => Array
(
[id_Publicadoras] => 730
[Publicadoras] => GT Interactive
)
)
[id_Desenvolvedora] => 1167
[Desenvolvedora] => Mesa Logic
)
)