comunic/3rdparty/analysing_page/analyser_fr.php

50 lines
1.8 KiB
PHP
Raw Permalink Normal View History

2016-11-19 11:08:12 +00:00
<?php
//Fonction d'analyse du contenu d'une page pour en extraire la description, le titre et l'image
function analyse_source_page_extrait_description($source)
{
//Préparation de l'analyse
$titre_page = null;
$description_page = null;
$image_page = null;
//Analyse des données
preg_match_all('#<meta (.*?)>#is', $source, $resultat,PREG_PATTERN_ORDER);
//Traitement
$liste_types = array(
array('titre' => 'titre_page', 'masque' => '<property="og:title">', 'debut' => 'content="', 'fin' => '"'),
array('titre' => 'titre_page', 'masque' => "<property='og:title'>", 'debut' => "content='", 'fin' => "'"),
array('titre' => 'description_page', 'masque' => "<property='og:description'>", 'debut' => "content='", 'fin' => "'"),
array('titre' => 'description_page', 'masque' => '<property="og:description">', 'debut' => 'content="', 'fin' => '"'),
array('titre' => 'image_page', 'masque' => '<property="og:image">', 'debut' => 'content="', 'fin' => '"'),
array('titre' => 'image_page', 'masque' => "<property='og:image'>", 'debut' => "content='", 'fin' => "'"),
);
//Parcours de la liste
foreach($resultat[1] as $traiter)
{
//Parcours des types de traitement
foreach($liste_types as $infos_traitement)
{
//Pré-traitement
$traiter = str_replace(' =', '=', $traiter);
//Vérification de la présence des informations
if(preg_match($infos_traitement['masque'], $traiter))
{
$debut = $infos_traitement['debut'];
$fin = $infos_traitement['fin'];
$titre = $infos_traitement['titre'];
$contenu = strstr($traiter, $debut);
$contenu = str_replace($debut, '', $contenu);
$contenu = strstr($contenu, $fin, true);
${$titre} = $contenu;
}
}
}
//Renvoi du résultat
return array('titre' => $titre_page, 'description' => $description_page, 'image' => $image_page);
}