le 22/05/2012 à 16:38
Scan du contenu dupliqué - Script PHP
Bonjour à tous !
Je n'ai pas trouvez la section pour me présenter alors en bref : Gaetano Notorio, 21 ans, etudiant en licence e-commerce. et je suis NUL en PHP
Voici ma requète :
Dans le cadre d'un projet, une entreprise m'a chargé de automatisé la recherche de contenu dupliqué sur la toile par rapport au contenu qu'il ont. A savoir que le contenu dupliqué est niusible au référencement naturel. Bref !
J'ai donc trouvez un script PHP permettant de justement trouvez ce contenu dupliqué via l'API de google pour ceux qui connaisse.
Ce code le voici :
Lorsque vous l'éxécuté et que vous rentré un texte, il vous trouve le contenu dupliqué de ce dernier en affichant le pourcentage et le lien vers l'url ou il ya le contenu dupliqué. Comme vous pouvez le voir ci-dessous :
[img]http://www.pixyup.com/uploads/221627104fbba23ee3256.jpg[/img]
Mes questions sont les suivante :
Comment je peux arrêter la boucle lorsque le taux est en dessous de 30 % ? et donc ne pas sonder la toile pour les requetes en desous de 30 % mais que celle entre 30 et 100
Comment ne pas faire prendre en compte les url commençant par : http://www.imagera.fr/ ? imagera.fr est le site sur lequel on se base pour savoir si le contenu est dupliqué donc aucun utilité à le prendre en compte.
Je vous remercie d'avance pour l'aide que vous pouvez m'apporter et vous répondrais dans la minute ou vous posterez vos réponse.
BONNE CHANCE !
Je n'ai pas trouvez la section pour me présenter alors en bref : Gaetano Notorio, 21 ans, etudiant en licence e-commerce. et je suis NUL en PHP
Voici ma requète :
Dans le cadre d'un projet, une entreprise m'a chargé de automatisé la recherche de contenu dupliqué sur la toile par rapport au contenu qu'il ont. A savoir que le contenu dupliqué est niusible au référencement naturel. Bref !
J'ai donc trouvez un script PHP permettant de justement trouvez ce contenu dupliqué via l'API de google pour ceux qui connaisse.
Ce code le voici :
<?php
header("Content-Type: text/html; charset=UTF-8");
$body="";
if(isset($_POST['text_origin']))
{
$text_origin = stripslashes($_POST['text_origin']);
// D�tection en parse direct sur la requ�te exacte (entre guillemet)
$url_parse = "http://www.google.fr/search?q=".urlencode('"'.$text_origin.'"')."&hl=fr&prmd=ivns&filter=0";
if ($text_origin)// R�cup�ration des donn�es
{
$fp = fopen($url_parse,"r");// On parse la page
if ($fp != FALSE)
{
while (!feof($fp))
{
$body .= fgets($fp, 4096);
}
}
if(strpos($body, 'yellow_warning.gif') == '')// On v�rifie si des r�sultats existent
{
if(strpos($body, '<h3 class="r"><a href="http://') != '')//On v�rifie que les limiteurs existent
{
preg_match_all('#<h3 class="r"><a href="http://(.*)"#Uis', $body, $listing);// On extrait les url
$nb_res = sizeof($listing[1]);// Comptage des tubes de $listing
$url_DC = "<h2>Pages plagiant le texte</h2><table border=0>";
for ($i=0; $i < $nb_res; $i++)
{
$url_DC.= "<tr><td style=\"width:50px;text-align:right;color:red;font-weight:bold;\">100,00%</td><td style=\"width:10px;\"></td><td><a href=\"http://".$listing[1][$i]."\">".$listing[1][$i]."</a></td></tr>";
}
}
else
{
$nook_code = "Google a modifi� son code source. L'expression r�gli�re du preg_match_all doit �tre modifi� !";
}
}
if ($fp != FALSE){fclose($fp);}
if (!isset($listing))
{
$listing[1][0] = "no-url";
$url_DC = "<h2>Pages plagiant le texte</h2><table border=0>";
}
for ($boucle=0;$boucle<=10;$boucle++)
{
$start = $boucle*8;
$url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=".urlencode($text_origin)."&start=".$start."&rsz=large";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//curl_setopt($ch, CURLOPT_REFERER, "http://www.castlemaniac.com/");
$body = curl_exec($ch);
curl_close($ch);
$json = json_decode($body, true);// Tableau associatif.
$nb_results_json = sizeof($json['responseData']['results']);// Nb de tube dans "results"
for ($i=0; $i < $nb_results_json; $i++)// Extraction "content"
{
$content = $json['responseData']['results'][$i]['content'];
$url_page_DC = str_replace("http://", "", $json['responseData']['results'][$i]['url']);
if(!in_array($url_page_DC, $listing[1]))
{
//Traitement de "content"
$content_origin = strip_tags($content);// Suppression des tags <b>
$content_origin = preg_replace('#[.]#', '', $content_origin);// Suppression des .
$content_origin = preg_replace('#[\s]+#', ' ', $content_origin);// Suppression des espaces multiples
$content_origin = preg_replace('#^[\s]|[\s]$#','',$content_origin);// Suppression des espaces en d�but et fin de chaine
$nb_word = explode(" ", $content_origin);// Mise des mots dans un tableau
$nb_word_content_origin = sizeof($nb_word);// Comptage des mots
// Traitement du texte en gras de "content"
$text_bold = "";
preg_match_all('#<b>(.*)</b>#Uis', $content, $bold);// R�cup�ration du texte en gras
$nb_result_bold = sizeof($bold[1]);// Nombre de tube dans $bold
for ($j=0; $j < $nb_result_bold; $j++)// Mise en commun des tubes et nettoyage
{
$bold[1][$j] = preg_replace('#[.]#', '', $bold[1][$j]);// Suppression des .
if (!empty($bold[1][$j]))$text_bold.= $bold[1][$j]." ";//Mise des r�sultat dans une seule variable
}
$text_bold = preg_replace('#[\s]+#', ' ', $text_bold);// Suppression des espaces multiples
$text_bold = preg_replace('#^[\s]|[\s]$#','',$text_bold);// Suppression des espaces en d�but et fin de chaine
$nb_word = explode(" ", $text_bold);// Mise des mots dans un tableau
$nb_word_text_bold = sizeof($nb_word);// Comptage des mots
$taux = round(($nb_word_text_bold*100)/$nb_word_content_origin,2);
$tab_url_DC_partiel[$url_page_DC] = $taux;
}
}
if ($nb_results_json < 8)break;// Limitation des requ�tes si r�ponse vide.
}
arsort($tab_url_DC_partiel, SORT_NUMERIC);// Classement d�croissant du taux
foreach($tab_url_DC_partiel as $key=>$val)
{
if ($val == 100)$style = "color:red;font-weight:bold;";// Style du tableau
elseif ($val < 100 && $val >= 50)$style = "color:red;";// Style du tableau
else $style ="";// Style du tableau
$val = number_format($val, 2, ',', ' ');// Mise ne forme du taux
$url_DC.= "<tr><td style=\"width:50px;text-align:right;".$style."\">".$val."%</td><td style=\"width:10px;\"></td><td><a href=\"http://".$key."\">".$key."</a>--> API</td></tr>";
}
$url_DC.= "</table>";
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<form action="" method="post">
<label>Phrase test :</label><br />
<input type="text" name="text_origin" />
<input type="submit" name="submit" value="Ok" />
</form>
<?php
if(isset($_POST['text_origin']))
{
?>
<h1 style="text-align:center;">D�tection du DC dans l'index Google</h1>
<cite>Texte � identifier</cite><blockquote style="padding:5px;margin:10px;border:1px red dotted;background:aliceblue;font-weight:bold;"><?php echo $text_origin; ?></blockquote>
<?php if (!empty($nook_code))// Alerte
{
?>
<div style="text-align:center;padding:5px;margin:10px;border:1px red solid;background:aliceblue;font-weight:bold;font-color:red;"><?php echo $nook_code; ?></div>
<?php
}
?>
<?php echo $url_DC; // Affichage tableau ?>
<?php
}
?>
</body>
</html>
Lorsque vous l'éxécuté et que vous rentré un texte, il vous trouve le contenu dupliqué de ce dernier en affichant le pourcentage et le lien vers l'url ou il ya le contenu dupliqué. Comme vous pouvez le voir ci-dessous :
[img]http://www.pixyup.com/uploads/221627104fbba23ee3256.jpg[/img]
Mes questions sont les suivante :
Comment je peux arrêter la boucle lorsque le taux est en dessous de 30 % ? et donc ne pas sonder la toile pour les requetes en desous de 30 % mais que celle entre 30 et 100
Comment ne pas faire prendre en compte les url commençant par : http://www.imagera.fr/ ? imagera.fr est le site sur lequel on se base pour savoir si le contenu est dupliqué donc aucun utilité à le prendre en compte.
Je vous remercie d'avance pour l'aide que vous pouvez m'apporter et vous répondrais dans la minute ou vous posterez vos réponse.
BONNE CHANCE !