Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    DOM e caratteri ebraici

    Ciao a tutti,

    ho un problema con creazione di un documento, tramite DOM, nel quale sono presenti lettere ebraiche, e "non tutto" il documento viene visualizzato correttamente.
    La pagina in questione è: http://www.hebrewoldtestament.com/B01C014.htm
    Se salvo la pagina tramite stream_get_contents e poi la visualizzo va tutto bene.
    Ma se carico il documento tramite DOM, al momento in cui lo voglio visualizzare, in alcune zone di testo i caratteri non corrispondono assolutamente a quelli originali.
    Esattamente al versetto 19 (e anche in altri versetti) dell'html, anzichè visualizzare i caratteri in ebraico mi visualizza questi:
    ויברכהו וי×מר
    ברוך ××‘×¨× ×œ×ל
    עליון ×§× ×” שמי×
    ו×רץ×


    Il codice è questo:
    codice:
    $url="http://www.hebrewoldtestament.com/B01C014.htm";
    $handle=fopen($url, "r");
    $content=stream_get_contents($handle);   
    // se faccio "echo $content" visualizza la pagina correttamente
    $doc= new DOMDocument();  // oppure $doc= new DOMDocument(VERSION, ENCODING);
    $doc->loadHTML($content);
    $doc->normalizeDocument()
    ...
    ...
    echo $doc->saveHTML();
    Nell'ultima riga mi da un html che però non viene visualizzato correttamente.
    Ho utilizzato $doc->normalizeDocument() perchè i tag risultavano tutti in maiuscolo.
    Ho anche utilizzato header("Content-Type:text/html; charset=utf-8"); ma niente.
    Ho provato a levare il DTD dal DomDocument perchè nella pagina originale non c'è, mentre DOM me lo crea in automatico (PERCHE' ???), ma comunque niente.

    Avete qualche idea migliore?

    Grazie
    Maurizio

  2. #2

  3. #3

    DOM e caratteri ebraici - HTML not well-formed?

    Ho seguito la guida ed effettivamente avevo dimenticato di settare ini_set ad utf-8; ho anche settato in httpd.conf di apache2 il valore "AddDefaultCharset utf-8", ma purtroppo non ho risolto ancora. Non sto usando alcun database.
    In pratica sembra che il problema me lo dia proprio DOM.
    Dopo aver fatto il $doc->loadHTML("content") anche se poi salvo su file, i caratteri non corrispondono. E non credo però che si tratti di una codifica errata, perchè i caratteri ebraici precedenti vengono visualizzati correttamente.
    Che fare???

    Aggiornamento:
    Ho visto che la pagina è scritta in un modo barbaro: i tag sono in maiuscolo e molti non hanno la chiusura e quindi sto iniziando a modificare ognuno di loro.
    Non so ancora se questo risolverà il problema, ma:
    Poichè con $doc->normalizeDocument() ho sostituito i tag da maiuscolo a minuscolo (e forse ha apportato qualche altra modifica), ora la mia domanda è:
    Esiste una qualche funzione che mi chiuda i tag direttamente? Altrimenti dovrei inventarmi qualcosa, anche se sinceramente non so ancora come fare.
    Grazie
    Ultima modifica di mastria9; 18-12-2013 a 16:41 Motivo: Aggiornamento

  4. #4

    DOM e caratteri ebraici - HTML5 to XHTML - RISOLTO

    Risolto

    Il problema sta nel fatto che DOM non parsa bene l'html5. Mi era sfuggito perché DOM mi creava automaticamente il DTD e anche se lo toglievo poi non funzionava.

    Ho applicato questo codice:
    codice:
    $url= "http://www.urldiprova.it";
    $urlHandle=fopen($url, "r");
    $html=stream_get_contents($urlHandle);
    // seguo la guida
    $html = preg_replace_callback('#<(\w+)([^>]*)\s*/>#s', function($matches){         
    // ignore only these tags        
    $xhtml_tags = array('br', 'hr', 'input', 'frame', 'img', 'area', 'link', 'col', 'base', 'basefont', 'param' ,'meta');         
    // if a element that is not in the above list is empty,        
    // it should close like   `<element></element>` (for eg. empty `<title>`)        
    return in_array($matches[1], $xhtml_tags) ? "<{$matches[1]}{$matches[2]} />" : "<{$matches[1]}{$matches[2]}></{$matches[1]}>"; }, $html);
    $dom=new DOMDocument("1.0","utf-8");
    $dom->loadHTML($html);
    $dom->normalizeDocument();
    
    header("Content-Type:text/html; charset=utf-8");
    //visualizzo l'html o lo salvo in un file
    echo $html = $dom->saveHTML(); //oppure $dom->saveHTML("fileName.html");
    Comunque posto il link del thread dove ho trovato la soluzione:
    http://stackoverflow.com/questions/1...th-domdocument

    Ciao e grazie comunque.
    Maurizio

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.