24/04/2018 12:38
Prima utilizzo il metodo per cercare i tag "video". Se non viene trovato nessun video, utilizza il metodo per cercare i "sources" della classe di JavaScript.
Codice PHP:
// Verifico che il codice HTML sia stato recuperato correttamente
if ($html !== false) {
// Utilizzo la libreria DOM di PHP per gestire il codice HTML
$doc = new DOMDocument();
// Assegno il codice HTML alla classe e verifico che il codice HTML sia corretto
if ($doc->loadHTML($html, LIBXML_NOWARNING)) {
// Cerco tutti i tag "video"
$videos = $doc->getElementsByTagName('video');
// Scorro i tag "video"
foreach ($videos as $video) {
// Scorro i tag figli
foreach ($video->childNodes as $node) {
// Cerco il tag "source"
if ($node->nodeName == 'source') {
// Verifico che il tag "source" abbia degli attributi
if ($node->attributes) {
// Estraggo il valore dell'attributo "src" dal tag "source"
$src = $node->attributes->getNamedItem('src')->nodeValue;
// Fermo il ciclo se è stato trovato il video
if ($src) {
break;
}
}
}
}
// Fermo il ciclo se è stato trovato il video
if ($src) {
break;
}
}
}
// Se non è stato trovato il video con il metodo precedente...
if (!$src) {
$m = array();
// Cerco tutti i "sources: [..]"
if (preg_match_all('/sources:([\s]+?)\[([^\]]+)]/', $html, $m) {
// Prendo l'ultimo elemento trovato con l'espressione regolare tra le stringhe trovate tra le due parentesi quadre
$videos = explode(',', end($m[2]));
// Recupero il primo video eliminando spazi iniziali e finali e poi virgolette iniziali e finali
$src = trim(trim($videos[0]), '"');
}
}
}
Mattia!