Vous êtes ici Codes PHP et MySQL > Google > Anti duplicate content (contenu dupliqué)

 

Anti duplicate content (contenu dupliqué)

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.
 
forty
Site de l'auteur voir
[23] sources en PHP voir
Code vu 5248 fois
Enregistré le 23 Oct 2008
  • Digg ce code sur digg.com
  • Bookmark ce code sur del.icio.us
  • Bookmark ce code sur Google
  • Bookmark ce code sur Yahoo
  • Ajoute Anti duplicate content (contenu dupliqué)
  • Partage ce code sur Facebook
 
 
 
 

Code Source


01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
 
<?php
/******************************************************************************/
/*                                                                            */
/*                       __        ____                                       */
/*                 ___  / /  ___  / __/__  __ _____________ ___               */
/*                / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-<               */
/*               / .__/_//_/ .__/___/\___/\_,_/_/  \__/\__/___/               */
/*              /_/       /_/                                                 */
/*                                                                            */
/*                                                                            */
/******************************************************************************/
/*                                                                            */
/* Titre          : Anti duplicate content (contenu dupliqué)                 */
/*                                                                            */
/* URL            : http://www.phpsources.org/scripts463-PHP.htm              */
/* Auteur         : forty                                                     */
/* Date édition   : 23 Oct 2008                                               */
/* Website auteur : http://www.toplien.fr/                                    */
/*                                                                            */
/******************************************************************************/

//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($chCURLOPT_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($chCURLOPT_HEADERfalse)) {
            $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($chCURLOPT_RETURNTRANSFERtrue)) {
            $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($chCURLOPT_FOLLOWLOCATIONtrue)) {
            $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($chCURLOPT_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($chCURLOPT_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($chCURLOPT_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($chCURLOPT_TIMEOUT10)) {
            $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>&nbsp;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';
}
?>

 

Fonctions du code

: Définit une constante - (PHP 4, PHP 5)
: Supprime les antislashs d'une chaîne - (PHP 4, PHP 5)
: Effectue la césure d'une chaîne - (PHP 4 >= 4.0.2, PHP 5)
: Coupe une chaîne en segments - (PHP 4, PHP 5)
: Encode une chaîne en URL - (PHP 4, PHP 5)
: Indique si une fonction est définie - (PHP 4, PHP 5)
: Initialise une session cURL - (PHP 4 >= 4.0.2, PHP 5)
: Retourne le dernier message d'erreur cURL - (PHP 4 >= 4.0.3, PHP 5)
: Retourne une chaîne contenant le dernier message d'erreur cURL - (PHP 4 >=...
: Définit une option de transmission cURL - (PHP 4 >= 4.0.2, PHP 5)
: Exécute une session cURL - (PHP 4 >= 4.0.2, PHP 5)
: Ferme une session CURL - (PHP 4 >= 4.0.2, PHP 5)
: Lit tout un fichier dans une chaîne - (PHP 4 >= 4.3.0, PHP 5)
: Protection des caractères spéciaux des expressions rationnelles - (PHP 4, PHP 5)
: Convertit une chaîne ISO-8859-1 en UTF-8 - (PHP 4, PHP 5)
: Expression rationnelle standard - (PHP 4, PHP 5)
: Affiche une chaîne de caractères - (PHP 4, PHP 5)
Commentaires
Salut
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?
 
il y avait un bug à l'affichage du script. C'est normalement corrigé.
 
Si le passage par la recherche classique ne marche pas (l'accès est interdit depuis certains hébergeurs), il est possible d'utiliser l'API de recherche google.
 
oki, merci forty :P.
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
 
utilise l'API, elle fonctionne chez tous les hébergeurs !!  



 
Ajouter un commentaire
Code de sécurité

Attention: Les champs marqués d'une étoile * sont obligatoires
 
Librairie PHP

Connexion

 
 

Google

 
 

PHP

 
 
 
Ajax et PHP Livre PHP

Ajax et PHP
 
    Offres d'emploi

Plus de 500 offres d'emploi PHP/MySQL

Offres d'emploi
 
    Editeur PHP
 
        Publicité