<?php
|
/*---------------------------------------------------------------*/
|
/*
|
Titre : Anti duplicate content (contenu dupliqué)
|
|
URL : https://phpsources.net/code_s.php?id=463
|
Auteur : forty
|
Website auteur : http://www.toplien.fr/
|
Date édition : 23 Oct 2008
|
Date mise à jour : 13 Aout 2019
|
Rapport de la maj:
|
- fonctionnement du code vérifié
|
*/
|
/*---------------------------------------------------------------*/
|
//Anti duplicate content (contenu dupliqué)
|
/*
|
Ce script est basé sur celui disponible ici :
|
http://www.seoblackout.com/2007/09/28/eviter-duplicate-content/
|
|
Cette fonction permet de vérifier qu'un texte n'est pas déjà  présent
|
sur internet en récupérant le résultat d'une recherche sur le moteur
|
de recherche google.
|
Deux paramètres sont disponibles :
|
- le nombre de caractères maximum à  vérifier (fixé à  1000
|
dans l'exemple),
|
- le nombre de résultat maximum (fixé à  10 dans l'exemple).
|
|
La fonction is_duplicate_content renvoi false si le nombre d'occurrences est
|
inférieur au nombre maximum et sinon un texte d'erreur.
|
*/
|
|
//Nombre de caractères maximum pour la recherche dans google
|
define('MAX_CAR', 1000);
|
|
//Nombre de résultats maximum dans le résultat de la recherche google
|
define('MAX_RESULT', 10);
|
|
function is_duplicate_content($desc) {
|
//Nombre de caractères max. de la description à  controler
|
$desc_cut=wordwrap(stripslashes($desc), MAX_CAR, "<br />", 1);
|
$cut = explode('<br />', $desc_cut);
|
$cut = $cut[0];
|
$url = 'http://www.google.fr/search?q='. urlencode($cut).
|
'&hl=fr&ie=UTF-8&safe=off&filter=0';
|
if (function_exists('curl_init')) {
|
if (($ch = curl_init($url)) === false) {
|
$num_erreur = curl_errno($ch);
|
$text_erreur = curl_error($ch);
|
return
|
"<font color=\"red\">Erreur d'initialisation de la session cURL pour $url :" .
|
" $num_erreur : $text_erreur</font>";
|
}
|
if (!curl_setopt($ch, CURLOPT_USERAGENT,
|
'Mozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8.1.8) Gecko/20071008' .
|
' Firefox/2.0.0.8')) {
|
$num_erreur = curl_errno($ch);
|
$text_erreur = curl_error($ch);
|
return
|
"<font color=\"red\">Erreur d'ajout de l'option cURL USERAGENT pour $url :" .
|
" $num_erreur : $text_erreur</font>";
|
}
|
if (!curl_setopt($ch, CURLOPT_HEADER, false)) {
|
$num_erreur = curl_errno($ch);
|
$text_erreur = curl_error($ch);
|
return
|
"<font color=\"red\">Erreur d'ajout de l'option cURL HEADER pour $url :" .
|
" $num_erreur : $text_erreur</font>";
|
}
|
if (!curl_setopt($ch, CURLOPT_RETURNTRANSFER, true)) {
|
$num_erreur = curl_errno($ch);
|
$text_erreur = curl_error($ch);
|
return
|
"<font color=\"red\">Erreur d'ajout de l'option cURL RETURNTRANSFER pour $url" .
|
" : $num_erreur : $text_erreur</font>";
|
}
|
if (!curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true)) {
|
$num_erreur = curl_errno($ch);
|
$text_erreur = curl_error($ch);
|
return
|
"<font color=\"red\">Erreur d'ajout de l'option cURL FOLLOWLOCATION pour $url" .
|
" : $num_erreur : $text_erreur</font>";
|
}
|
if (!curl_setopt($ch, CURLOPT_MAXREDIRS , 10)) {
|
$num_erreur = curl_errno($ch);
|
$text_erreur = curl_error($ch);
|
return
|
"<font color=\"red\">Erreur d'ajout de l'option cURL MAXREDIRS pour $url :" .
|
" $num_erreur : $text_erreur</font>";
|
}
|
$header[] =
|
"Accept:" .
|
" text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=" .
|
"0.8,image/png,*/*;q=0.5\r\n";
|
$header[] = "Accept-Language: fr\r\n";
|
if (!curl_setopt($ch, CURLOPT_HTTPHEADER, $header)) {
|
$num_erreur = curl_errno($ch);
|
$text_erreur = curl_error($ch);
|
return
|
"<font color=\"red\">Erreur d'ajout de l'option cURL HTTPHEADER pour $url :" .
|
" $num_erreur : $text_erreur</font>";
|
}
|
if (!curl_setopt($ch, CURLOPT_ENCODING, '')) {
|
$num_erreur = curl_errno($ch);
|
$text_erreur = curl_error($ch);
|
return
|
"<font color=\"red\">Erreur d'ajout de l'option cURL ENCODING pour $url :" .
|
" $num_erreur : $text_erreur</font>";
|
}
|
if (!curl_setopt($ch, CURLOPT_TIMEOUT, 10)) {
|
$num_erreur = curl_errno($ch);
|
$text_erreur = curl_error($ch);
|
return
|
"<font color=\"red\">Erreur d'ajout de l'option cURL TIMEOUT pour $url :" .
|
" $num_erreur : $text_erreur</font>";
|
}
|
if (($data = curl_exec($ch)) === false) {
|
$num_erreur = curl_errno($ch);
|
$text_erreur = curl_error($ch);
|
$erreur =
|
"Erreur d'exécution cURL pour $url : $num_erreur : $text_erreur";
|
return "<font color=\"red\">$erreur</font>";
|
}
|
curl_close($ch);
|
}
|
else {
|
$data = file_get_contents($url);
|
}
|
$pattern1 = utf8_encode('/' . preg_quote(
|
'Aucune page ne contient tous ces termes de recherche.', '/') . '/');
|
$pattern2 = utf8_encode('/' . preg_quote('<p> Résultats <b>', '/') .
|
'([0-9]+)' . preg_quote('</b> - <b>', '/') . '([0-9]+)' . preg_quote('</b> sur '
|
, '/') . '(' . preg_quote('un total d\'environ ', '/') . ')?' . preg_quote('<b>'
|
, '/') . '([0-9]+)' . preg_quote('</b> pour <b>', '/') . '/');
|
if (preg_match($pattern1, $data)) {
|
return false;
|
} elseif (preg_match($pattern2, $data, $valeurs)) {
|
if ($valeurs[4] > MAX_RESULT) {
|
$result = $valeurs[4]." résultats pour cette description : <i>".
|
$cut."</i> sur Google<br>";
|
$result .=
|
"il y donc un risque potentiel de duplicate content, veuillez saisir une" .
|
" description unique !";
|
return $result;
|
} else {
|
return false;
|
}
|
} else {
|
return
|
'Le résultat de la recherche sur google n\'est pas interprétable';
|
}
|
}
|
|
$description =
|
"Nous vous proposons de la randonnée et des treks au maroc à  la" .
|
" découverte des plus belles régions : essentiellement le Toubkal et la" .
|
" cà ´te atlantique.";
|
$result_final = is_duplicate_content($description);
|
if ($result_final !== false) {
|
echo $result_final;
|
} else {
|
echo 'OK';
|
}
|
?>
|
|
|
KOogar
12 Juil 2009 à 06:12utilise l'API, elle fonctionne chez tous les hébergeurs !!
Invité
16 Fév 2009 à 20:41oki, merci forty.
Bon je viens de re tenter le coup mais chez moi sa veut pas ^^
[cit nom=]Le résultat de la recherche sur google n'est pas interprétable[/cit]
et j'y ai le droit quelque soit la description!
Je vais allé voir ton lien .
Merci
Forty
15 Fév 2009 à 21:55il y avait un bug à l'affichage du script. C'est normalement corrigé.
Invité
15 Fév 2009 à 20:34Salut
Cette fonction ne marche pas telle quelle.
Fatal error: Cannot use [] for reading in /home.31/r/e/f/reflink/www/teste-anti-duplicate.php on line 50
Si $cut = $cut[0] ; alors : Le résultat de la recherche sur google n'est pas interprétable
Il est ou le bug?