el tema es asi, lenguajes se solamente php, y c, y algo de visual basic, pero php es lo que mas me gusta.
el archivo es un .DICT, hay que leer linea por linea porque estan relacionadas
es un diccionario, y lo que separa palabra de palabra es una linea con varios ====== , que a veces cambia el largo.
ademas la 5 linea despues de esos === empieza o con 1[ o con 2[ o con 3[ , si es 1 o 2 es una "pagina nueva" y si es 3 depende del que esta arriba, es algo muy complejo.
ahi probe dejar solo este texto que puse aca y funciono bien, pero al poner el otro codigo es cuando mas se cuelga, que ahi es cuando pasa por varias funciones mas que hacen buscar y reemplazar, convertir textos, etc.
Fatal error: Maximum execution time of 360 seconds exceeded in...
esta seria la 2da parte del archivo que ejecuto:
Código PHP:
$shtml='<?xml version="1.0" encoding="utf-8" ?><mediawiki xmlns="http://www.mediawiki.org/xml/export-0.3/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.3/ http://www.mediawiki.org/xml/export-0.3.xsd" version="0.3" xml:lang="en">
<siteinfo>
<sitename>Sanskrita</sitename>
<base></base>
<generator>MediaWiki 1.10.0</generator>
<case>case-sensitive</case>
<namespaces>
<namespace key="-2">Media</namespace>
<namespace key="-1">Special</namespace>
<namespace key="0"/>
<namespace key="1">Talk</namespace>
<namespace key="2">User</namespace>
<namespace key="3">User talk</namespace>
<namespace key="4">Sanskrita</namespace>
<namespace key="5">Sanskrita talk</namespace>
<namespace key="6">Image</namespace>
<namespace key="7">Image talk</namespace>
<namespace key="8">MediaWiki</namespace>
<namespace key="9">MediaWiki talk</namespace>
<namespace key="10">Template</namespace>
<namespace key="11">Template talk</namespace>
<namespace key="12">Help</namespace>
<namespace key="13">Help talk</namespace>
<namespace key="14">Category</namespace>
<namespace key="15">Category talk</namespace>
</namespaces>
</siteinfo>';
$page=0;
for ($x=1;$x<$newentry;$x++)
{
$page=${'matriz'.$x}[0];
if ($page) // Esto se imprime una vez por cada pagina
{
$pagedict=$page;
${dictorig.$page}.=rtrim(str_replace("---> ","->",${'matriz'.($x)}[6]));
$key[$page]=keywordshk(${'matriz'.$x}[1]);
if ($x>1)
{
$pagedicttemp=($page-1);
$shtml.=htmlspecialchars('<!-- <mw page="'.(($page-1)*10).'"> -->');
$shtml.=htmlspecialchars('<!-- <keywords>'.$key[$page-1].'</keywords> -->');
$shtml.=htmlspecialchars('<!-- <link></link> -->');
$shtml.=htmlspecialchars('<!-- <progress en="" es=""> -->');
$shtml.="\n\n".htmlspecialchars('<!-- *** START DICT ORIGINAL ***'.${dictorig.$pagedicttemp}."\n\n".'*** END DICT ORIGINAL *** -->');
$shtml.='</text>
</revision>
</page>';
}
$shtml=$shtml. "\n<page>\n<title>".${'matriz'.$x}[1];
$hkraiz=${'matriz'.$x}[5];
$hkprevraiz=trim(${'matriz'.$x}[4]); // previo hasta raiz
$hkprevraiz=str_replace("'","",$hkprevraiz);
$hksimbol=$hkprevraiz.$hkraiz;
$hk=${'matriz'.$x}[1];
$def=str_replace('&','&',${'matriz'.$x}[3]);
$def=search_and_replace($def);
$shtml.='</title>
<id></id>
<revision>
<id></id>
<timestamp></timestamp>
<contributor>
<username></username>
<id></id>
</contributor>
<minor/>
<text xml:space="preserve">';
$shtml=$shtml.impmodule($hk,$hkraiz);
$shtml=$shtml. "\n\n";
$shtml=$shtml. "\n" . htmlspecialchars('<html><div id="santitle"><santitle>');
$shtml=$shtml. $hk;
$shtml=$shtml. htmlspecialchars("</santitle></div></html>")."\n\n";
$shtml=$shtml. htmlspecialchars('==<html><div id="sanskrita"><sanskrita>');
$shtml=$shtml. $hk;
$shtml=$shtml. htmlspecialchars('</sanskrita></div></html>');
$shtml=$shtml. htmlspecialchars(" ''").htmlspecialchars($hkprevraiz).raizlink($hkraiz).htmlspecialchars("'' ");
$shtml=$shtml. htmlspecialchars('<font color="#616E33">[ ');
$shtml=$shtml. $hk;
$shtml=$shtml. htmlspecialchars(' ]</font><!--<html><a href="/wiki/images/');
$shtml=$shtml. substr($hk,0,1)."/".$hk.".wav";
$shtml=$shtml. htmlspecialchars('"><img src="/wiki/images/audio.gif" width="19" height="18" border="0" /></a></html>-->==')."\n";
$shtml=$shtml. "\n\n";
$shtml=$shtml. htmlspecialchars('<multilang>')."\n";
$shtml=$shtml. "\n\n";
$shtml=$shtml. htmlspecialchars('@es|')."\n";
$shtml=$shtml. htmlspecialchars('<!-- *** AQUI COMIENZA LA VERSION EN ESPANOL *** -->');
$shtml=$shtml. ltrim($def)."\n";
$shtml=$shtml. htmlspecialchars('<!-- *** AQUI TERMINA LA VERSION EN ESPANOL *** -->')."\n";
$shtml=$shtml. htmlspecialchars('@en|')."\n";
$shtml=$shtml. htmlspecialchars('<!-- *** ENGLISH VERSION STARTS HERE *** -->');
$shtml=$shtml. ltrim($def)."\n";
$shtml=$shtml. htmlspecialchars('<!-- *** ENGLISH VERSION ENDS HERE *** -->')."\n";
$shtml=$shtml. htmlspecialchars('</multilang>')."\n";
}
else
{
${dictorig.$pagedict}.=rtrim(str_replace("---> ","->",${'matriz'.($x)}[6]));
$key[$page].=", ".keywordshk(${'matriz'.$x}[1]);
$hkraiz=${'matriz'.$x}[5];
$hkprevraiz=trim(${'matriz'.$x}[4]); // previo hasta raiz
$hkprevraiz=str_replace("'","",$hkprevraiz);
$palabras=split("√",$hkraiz); // cortamos la raiz por si hay mas de una en la misma palabra
$hkraiz1='';
for($i=0;$palabras[$i];$i++)
{
if ($i>0)
$hkraiz1.="√";
$hkraiz1.= raizlink($palabras[$i]);
}
$hk=${'matriz'.$x}[1];
$def=str_replace('&','&',${'matriz'.$x}[3]);
$def=search_and_replace($def);
$hksimbol=$hkprevraiz.$hkraiz1;
if (strlen($hkraiz)<1)
$hksimbol=simbols($hksimbol);
$shtml=$shtml. "\n\n";
//echo htmlspecialchars("==''").rtrim(ltrim($hksimbol)).htmlspecialchars("'' ");
$shtml=$shtml. htmlspecialchars("==''").htmlspecialchars($hksimbol).htmlspecialchars("'' ");
$shtml=$shtml. htmlspecialchars('<font color="#616E33">[ ');
$shtml=$shtml. $hk;
$shtml=$shtml. htmlspecialchars(' ]</font><!--<html><a href="/wiki/images/');
$shtml=$shtml. substr($hk,0,1)."/".$hk.".wav";
$shtml=$shtml. htmlspecialchars('"><img src="/wiki/images/audio.gif" width="19" height="18" border="0" /></a></html>-->==')."\n";
$shtml=$shtml. "\n\n";
$shtml=$shtml. htmlspecialchars('<multilang>')."\n";
$shtml=$shtml. "\n\n";
$shtml=$shtml. htmlspecialchars('@es|')."\n";
$shtml=$shtml. rtrim(ltrim(htmlspecialchars('<!-- *** AQUI COMIENZA LA VERSION EN ESPANOL *** -->')));
$shtml=$shtml. ltrim($def)."\n";
$shtml=$shtml. htmlspecialchars('<!-- *** AQUI TERMINA LA VERSION EN ESPANOL *** -->')."\n";
$shtml=$shtml. htmlspecialchars('@en|')."\n";
$shtml=$shtml. rtrim(ltrim(htmlspecialchars('<!-- *** ENGLISH VERSION STARTS HERE *** -->')));
$shtml=$shtml. ltrim($def)."\n";
$shtml=$shtml. htmlspecialchars('<!-- *** ENGLISH VERSION ENDS HERE *** -->')."\n";
$shtml=$shtml. htmlspecialchars('</multilang>')."\n";
}
}
$shtml.=htmlspecialchars('<!-- <mw page="'.($page*10).'"> -->');
$shtml.=htmlspecialchars('<!-- <keywords>'.$key[$page].'</keywords> -->');
$shtml.=htmlspecialchars('<!-- <link> </link> -->');
$shtml.=htmlspecialchars('<!-- <progress en="" es=""> -->');
$shtml.=htmlspecialchars('<!-- *** START DICT ORIGINAL ***'.${dictorig.$pagedict}.'*** END DICT ORIGINAL *** -->');
$shtml.='</text>
</revision>
</page>
</mediawiki>';
$shtml=str_replace("> ",">",$shtml);
$sfile="test.xml"; //ruta del archivo a generar
$fp=fopen($sfile,"w+");
fwrite($fp,$shtml);
fclose($fp);
echo "<a href='".$sfile."'>Haz click aqui para bajarlo</a>";