Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/12/2010, 14h45   #1
Invité de passage
 
Inscription : décembre 2010
Messages : 3
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 3
Points : 0
Points : 0
Par défaut Extraire une page html avec les accents

Bonjour,

Je galère un peu sur un script la en fait, donc j'aurais besoin d'un peu d'aide la ^^

En gros voila ce que fait mon script (d'origine, le script de Olivier Népomiachty). Je lui donne l'url d'une application iphone sur le site d'apple et celui-ci récupère les lignes qui m'intéresse comme le titre, la description, etc..

Bref, voila le code :

Code :
1
2
3
4
5
6
7
8
9
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
 
<?php
 
require ('connect.php');
require ('lib.php');
 
if (!empty($_POST['id_apple']) AND !empty($_POST['id_store'])) {
 
		echo '
		<html>
		<head>
		<title></title>
		<meta name="description" content="">
		<meta name="keywords" content="">
		<meta name="author" content="">
		<meta name="generator" content="">
		<link rel="StyleSheet" type="text/css" href="style1.css">
		</head>
		<body>
		';
 
	$id_apple = $_POST['id_apple'];
 
	if ($_POST['id_store'] == "1") {
 
		$url="http://ax.itunes.apple.com/app/id$id_apple?mt=8";
 
	}
	else {
 
		$url="http://ax.itunes.apple.com/fr/app/id$id_apple?mt=8";
 
	}
 
	$html = file_get_contents($url);
 
	$pos1 = strpos($html, "<div id=\"title\" class=\"intro\">");
	$pos2 = strpos($html, "<li class=\"genre\">");
	$data_brut = substr($html,$pos1,$pos2-$pos1);
 
	// TITRE
	$data=split("\n", $data_brut);
	$no_ligne=1;
	$titre = trim($data[$no_ligne]);
 
	// DESCRIPTION
	$data=split("\n", $data_brut);
	$no_ligne=18;
	$description = trim($data[$no_ligne]);
 
	echo '<br /><br /><br />';
 
	echo $titre;
	echo $description;
 
	echo '<br /><br /><br />';
Donc la, il m'affiche bien le titre de l'application ainsi que la description mais avec plein de caractères du style "é" à la place des accents, caractères spéciaux, etc..
Si par contre je fait un echo de la variable $html, j'ai bien la page entière de l'application et avec les bons caractères. J'image donc que le problème vient au moment ou je sélectionne les lignes que je veut prendre, ou quelque chose comme ca..

Je vous remercie d'avance pour votre aide
JWysiwyg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 15h03   #2
Membre éprouvé
 
Avatar de radicaldreamer
 
Homme Guillaume
Développeur Web
Inscription : décembre 2007
Messages : 353
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Âge : 21
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 353
Points : 473
Points : 473
test de faire pour l'affichage de la variable utf8_decode($variable) ou utf8_encode($variable)

__________________
Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi.

- Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre
radicaldreamer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 15h13   #3
Invité de passage
 
Inscription : décembre 2010
Messages : 3
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 3
Points : 0
Points : 0
Oui je viens de trouver ca dans le manuel php.

Donc j'ai testé et maintenant quand je suis l'Apple Store US je récupère bien le titre ainsi que la description voulue et en bonne forme

Par contre quand je suis sur le FR, la position des lignes changent (avant non) et il manque des morceaux de balise "<", etc..

Sinon j'avais penser à extraire les données sans les balises HTML de la page.

Donc si je modifie de cette manière :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
function filtre_html($s) {
	$s = str_replace("\r\n","<br />",$s);
	$s = str_replace("\n","<br />",$s);
	$s = str_replace("</TR>","</TR>\n",$s);
	$s = strip_tags($s);
	$s = str_replace("&nbsp;"," ",$s);
	return($s);
}
 
$data_brut_tf8 = utf8_encode(substr(utf8_decode($html),$pos1,$pos2-$pos1));
$data_brut = filtre_html($data_brut_tf8);
Le HTML est bien partit mais tout le contenu reste sur une seule ligne :s

Si vous avez des idées pour la première ou la deuxième méthode, je suis toujours preneur, et en vous remerciant d'avance
JWysiwyg est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h43.


 
 
 
 
Partenaires

Hébergement Web