2004/09/29
3 Comments
Reading time: 4 – 6 minutes
Segurament ja heu llegit que he tingut, i segurament encara tinc, problemes en formatejar la informació HTML a XHTML, que és el format amb el que treballen les noves versions de BLOG:CMS i en teoria el format del futur de les pàgines web. Ja que a través de les fulles d’estil s’aconsegueix una independència quasi 100% del contingut i el format del contingut. Si voleu més info del tema ús recomano que ús passeu per la web del Diego ( mini-d ) allà hi trobareu molta més informació sobre aquests formats i les seves avantatges.
Doncs en aquest article ús intentaré explicar com usant el PHP he intentat convertir automàticament el codi HTML dels meus anteriors articles i comentaris al nou format XHTML 1.0 transitional. De fet, com tots els processos de migració tenen un retoc manual, però l’important és que l’escript ens estalviï el màxim de feina possible.
Bé doncs, com diu el titol he usat el tidy per fer això, aquest software és una extensió pel PHP que ens permet automatitzar la conversió. De fet són una col·lecció de funcions molt útils, podeu mirar la documentació oficial de les mateixes a la web de php.
De fet, la majoria de funcions del tidy són pel PHP5 i jo obviament no uso aquesta versió del PHP, sinó la versió PHP 4.3.8, així doncs he suat una bona estona fins que he descobert a base de proba i error quines funcions anaben en PHP4, que per cert, no estan especificades al fantàstic manual de la gent de php.
Per instal·lar el tidy, amb el mini-manual que hi ha a php.net n’he tingut prou, tot i que el que no posa és que s’ha d’editar el fitxer php.ini i s’ha d’afegir la següent línia perquè es carregui l’extensió tidy:
extension = tidy.so
Es poden posar més opcions al fitxer php.ini però jo sincerament he passat d’elles. Per saber que funciona correctament, ús recomano que feun phpinfo(); i busqueu el requadre d’opcions per defecte del tidy, si no hi és vol dir que encara no teniu el suport carregat. Recordeu que després de tocar el php.ini heu de reiniciar el l’apache.
El codi de PHP4 que finalment he usat per fer la conversió és el següent:
$opts = array(
"clean" => true,
"output-xhtml" => true,
"drop-font-tags" => true,
"drop-empty-paras" => true,
"wrap" => 80,
"logical-emphasis" => true,
"enclose-text" => true,
"enclose-block-text" => true ); $html="Codi en format HTML<br>Per provar <b>que tot funcioni</b>";
$xhtml=tidy_repair_string($html,$opts);
Pel que fa les opcions que uso, ús recomano que les treieu de Clean up your Web pages with HTML TIDY aquest document, té una zona on es descriuen força bé les opcions del conversor. Pel que fa a la resta del codi ens tornarà el codi XHTML amb tots els headers i footers i les mandangues propies dels formalismes del XML. Si com jo el que voleu és enviar aquest codi a la BBDD perquè són continguts d’articles, comentaris i altres similars, el que voldreu és treure aquestes capçaleres, perquè no hagueu de pensar com fer-ho aquí teniu el meu codi:
$inici = strpos ($xhtml,"<body>")+6;
$final = strpos ($xhtml,"</body>");
$final = $final - $inici;
$article = substr ( $sortida, $inici, $final);
Ara dins la variable article tindreu algo així:
<p>Codi en format HTML<br />Per provar <strong>que tot funcioni</strong>
Tot i que sembli molt senzill no ús vull dir les hores que m’ha portat descobrir això sinó pensarieu que sóc retrassat . De fet, tinc el cervell tan destrossat després d’intentar corregir tot això que m’entren ganes d’enviar-ho tot a rodar. Per altre banda, estic segur que encara queden coses que no acaben de funcionar al poral, espero que m’ajudeu a trobar-les perquè les pugui corregir. Gràcies.