REGEX et langage d'un site

Eléphant du PHP | 130 Messages

29 mai 2007, 23:13

Bonjour à tous !

Bon je viens vers vous pour vous faire tester quelques regex que j'ai fait, afin d'être sûr qu'elle soit compréhensible, j'aimerai que vous me dites ce que vous comprenez en la lisant.

Elle permettent de trouver la langue d'un site, je pense qu'il existe d'autre possibilité mais je n'est que trouver celle-ci (pour le moment).

La variable $codeHTML est le code HTML du site récupérer avec file_get_contents().

Voici les regex :
<?php

preg_match_all( '/<html xmlns="([^"]+)"([[:blank:]]*)xml:lang="([^"]+){1,2}"([[:blank:]]*)lang="([^"]+){1,2}">+/', $codeHTML, $language )

preg_match_all( '/<html xmlns="([^"]+)"([[:blank:]]*)xml:lang="([^"]+){1,5}"([[:blank:]]*)lang="([^"]+){1,5}">+/', $codeHTML, $language )

preg_match_all( '/<meta name="(lang|language)"([[:blank:]]*)content="([^"]+){1,2}"([[:blank:]]*[\/?])>+/', $codeHTML, $language )

preg_match_all( '/<meta http-equiv="(Content-language|content-language|language|lang)"([[:blank:]]*)content="([^"]+){1,2}"([[:blank:]]*[\/?])>+/', $codeHTML, $language )

?>
Le seul souci qui se présente à moi est que les balises HTML présente ci-dessous dans les regex, peuvent être dans tous les sens.

Exemple :
<link rel="stylesheet" href="style.css" type="text/css">

peut très bien s'écrire de la suivante aussi

<link rel="stylesheet" type="text/css" href="style.css">

ou encore

<link type="text/css" href="tstyle.css" rel="stylesheet">

Plusieurs façon sont possible. Les balises ne sont que pour monter les possibilité, ce n'est pas ce que je recherche avec les regex.

Voilà mon vrai problème, mais dans un premier temps savoir si mes regex sont corrects car je n'est pas eu le temps de tester encore, désolé.

Je vous remercie tous d'avance pour votre aide et vive PHPFrance ! :D

Mammouth du PHP | 19672 Messages

29 mai 2007, 23:27

Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 505 Messages

30 mai 2007, 09:20

Une autre possibilité est d'utiliser l'extension DOM. Vu ce que tu veux faire, ce sera bien plus adapté que les regex.

Je te renvoie vers un autre thread recent comportant quelques exemple d'utilisation du DOM.

http://www.phpfrance.com/forums/voir_sujet-29941.php

Eléphant du PHP | 130 Messages

30 mai 2007, 13:45

Bon, j'ai essaye les DOM mais sans succès, enfin, j'ai passé la matinée dessus mais je n'arrive pas à faire marcher correctement le tout. Bref, après la langue du site je voulais en fait récupérer via PHP le flux RSS que propose les sites, mais je me suis rappelé que la langue du site se trouve dans les fichiers RSS, donc pour pas m'embêter, je prendrai l'information nécessaire dedans, mais là pareil, apres quelque recherche, je ne trouve pas comment faire pour récupérer un flux RSS d'un site autre que par une REGEX ou DOM, si solution autre il y a bien entendu. Une idée ?

Eléphant du PHP | 63 Messages

05 juin 2007, 03:22

DOM, c'est bien.

(c'était l'instant "une opinion constructive, pour quoi faire ?")

Bref, surtout pour du RSS, vu que RSS, c'est du XML, et que la seule et unique fonction de DOM, c'est de gérer du XML.
Si tu prends quelques instants pour te plonger dans le manuel PHP, tu en tireras un bénéfice bien plus grand qu'à tenter de bidouiller des regex...