Ho cercato di analizzare le pagine Web utilizzando il DomObject HTML per poterle utilizzare per un'applicazione per scansionarle per la qualità SEO.Come impedire a PHP DomDocument di "correggere" la stringa HTML
Tuttavia ho incontrato un problema. A scopo di verifica che ho scritto una piccola pagina HTML contenente il seguente codice HTML errato:
<head>
<meta name="description" content="randomdesciption">
</head>
<title>sometitle</title>
Come si può vedere il titolo è al di fuori del tag head Quale è l'errore che sto cercando di rilevare.
Ora viene il problema, quando uso curl per catturare la stringa di risposta da questa pagina quindi inviarlo al documento dom per caricarlo come HTML in realtà lo aggiusta aggiungendo altri tag attorno al titolo.
<head>
<meta name="description" content="randomdesciption">
</head>
<head><title>sometitle</title></head>
Ho controllato i dati responce arricciatura e che infatti non è il problema, in qualche modo il DomDocument php durante l'esecuzione del loadHTML() metodo risolve la sintassi html.
Ho anche provato a disattivare gli attributi di ripristino, di sostituzioneEntità e validateOnParse di DomDocument impostandoli su false, senza successo.
Ho cercato su Google ma non riesco a trovare nessuna risposta finora. Immagino che sia un po 'raro per qualcuno che in realtà vuole che il codice HTML non venga risolto.
Qualcuno sa come impedire a DomDocument di risolvere il mio html danneggiato?
Grazie in anticipo
Avete preso in considerazione in esecuzione il markup tramite [ordine] (http://php.net/tidy) prima di passarlo a DOM, o anche al posto di DOM? È un'estensione utile per il rilevamento degli errori di markup. – TML
Nota: questo comportamento è in realtà come specificato in HTML: '' ha un tag di apertura e chiusura opzionale ed è implicito dalla presenza di un elemento head-only come '