Récupérer les données sur un autre site

Fermé
Wizzzz - 21 févr. 2005 à 19:42
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 16 mai 2007 à 16:28
Bonjour,

j'aimerai récupérer les données d'un page web pour les copier directement sur la mienne en php

- ex de page :
<html><body><div class=texte>LE TEXTE A COPIER</di></body></html>

donc comment récuperer ce texte et le mettre sur mon site (ou l'enregistrer dans une table mysql...
Merci d'avance
A voir également:

10 réponses

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
21 févr. 2005 à 20:00
Salut,

Tu as la fonction file_get_contents() qui te permet de lire un fichier en entier. Il suffit de le mettre dans une variable et de faire un echo.
<?

$texte=file_get_contents("ton_url");
echo "<html><body><div class='texte'> $texte </div></body></html>";

?>

Sinon, si tu veux carrément le code source d'une page Php il faut utiliser include ou require. Et il me semble que ça ne marche que si la page est sur ton site mais c'est à vérifier.
0
oui mais pour séléctionner juste une partie du texte ? comment faire ?
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
21 févr. 2005 à 20:27
Ben ça dépends de la partie du texte, tu veut le séléctionner sur des lignes précises? A partir d'un début précis....?
0
oui a partir d'n début précis
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
21 févr. 2005 à 20:44
C'est comme début? Une ligne? Un mot?
0
c'est un mot oui
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
22 févr. 2005 à 04:39
Alors si ton texte à insérer commence par "Expert en ptit lu" dans un fichier appelé truc.txt dans le même repertoire que ton fichier php en cours d'execution.

Ca donne:
<?
// Tout le contenu du fichier truc.txt va dans $fichier
$fichier=file_get_contents("./truc.txt");
$debut="Expert en ptit lu";

/* $texte_a_inserer prendra le contenu de $fichier en prenant pour début le contenu de $debut */
$texte_a_inserer=strstr($fichier,$debut);

echo "<html><body><div class=\"texte\"> $texte_a_inserer </div></body></html>";
?>


=> http://fr.php.net/manual/fr/function.strstr.php

Et voilà :-)
0
merci pour le début mais pour qu'il s'arrête a un mot précis je fais comment ...
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
22 févr. 2005 à 20:01
Eh bien tu fais tout pareil sauf qu'avant d'afficher $texte_a_inserer tu le transforme en tableau avec pour séparateur le mot que tu veux (on va prendre "fin".
<?
$texte_a_inserer=explode("fin",$texte_a_inserer);
?>


Puis tu fais finalement un echo sur le premier élément du tableau:
<?
echo $texte_a_inserer[0];
?>


Et voilà.
0
romantony Messages postés 3 Date d'inscription lundi 14 mai 2007 Statut Membre Dernière intervention 15 mai 2007
14 mai 2007 à 17:02
Bonjour,

J'ai suivi avec beaucoup d'intêret et de profit la discussion. J'ai réussi quelques tests...Néanmoins aprés de multiples essais je souhaite extraire une donnée qui s'actualise (exemple : un prix ou une température) sans faire apparaitre la légende :
- Sur la page de référence : Nice 31 ° Marseille 33 ° Lyon 28° ...
- Extraction souhaitée : 33° (uniquement la température car je place en fait une photo à la place de la ville)

Quelqu'un peut-il m'aider ?

Avec mes remerciements anticipés
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
14 mai 2007 à 20:33
Salut,

Dans ce cas, l'idéal est de passer par une expression régulière, c'est à dire un modèle de chaine de caractère qui te permettra d'extraire telle ou telle partie.

Par exemple, prenons ta chaîne "Nice 31° Marseille 33° Lyon 28°".

Tu veux n'extraire que la température de marseille.

Voilà ce que ça donnerais:
$chaine = "Nice 31° Marseille 33° Lyon 28°";
$exp = "/.*?Marseille ([0-9]{2})°.*/";

preg_match($exp, $chaine, $capture,PREG_OFFSET_CAPTURE);

echo $capture[0]; //Devrait écrire 33


Voici le fonctionnement, le modèle (ou masque), contenu dans $exp précise qu'il faut n'importe quel caractère (.*?) jusqu'à Marseille, ensuite un espace puis deux chiffres entre 0 et 9 ([0-9}{2}) puis un ° et n'importe quoi d'autre. Ce que l'on capture est entre parenhèses.

Enfin bref, je te renvoie ici pour plus de détail:
phpreg

J'ai pas testé mon truc, dis moi si ça marche pas et je vérifierai.
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
14 mai 2007 à 20:38
Remarque, plus simplement tu peux utiliser la fonction strstr pour localiser la postion de Marseille dans le texte, puis récupérer le nombre après.
Les expressions régulières c'est pratique mais c'est plus lourd en traitement, autant les éviter quand on peut finalement.
0
romantony Messages postés 3 Date d'inscription lundi 14 mai 2007 Statut Membre Dernière intervention 15 mai 2007
15 mai 2007 à 13:36
Bonjour et merci pour les indications précieuses qui m'ont permis d'avancer


Ainsi pour le :

$chaine = "Nice 31° Marseille 33° Lyon 28°";
$exp = "/.*?Marseille ([0-9]{2})°.*/";

preg_match($exp, $chaine, $capture,PREG_OFFSET_CAPTURE);

echo $capture[0]; //Devrait écrire 33

j'obtiens dans le navigateur :

ARRAY

Je ne sais pas à quoi cela correspond?

J'ai creusé du coté de strstr comme tu me l'avais conseillé et surprise :

<?
$chaine = "Nice 31° Marseille 33° Lyon 28°";
$exp = strstr($chaine,"Marseille");
$texte1 = str_replace('Marseille','',$exp);
$nouveau_texte = substr($texte1,0,strpos($texte1,'L'));

echo "<html><body><div class=\"texte\"> $texte_a_inserer </div></body></html>";
?>

En fait j'ai désigné la chaine
puis recherché tous les caractères à partir de Marseille (inclus)
puis effacer Marseille
et enfin supprimer le texte à partir de "L" (inclus)
Est-ce que c'est propre ?

Je vais tester ça entre 2 pages HTML avec un tableau excel...

Je te renouvelle mes remerciements
0
romantony Messages postés 3 Date d'inscription lundi 14 mai 2007 Statut Membre Dernière intervention 15 mai 2007
15 mai 2007 à 16:47
PS : dans la réponse précédente il faut remplacer echo...$texte_à_insere par $nouveau_texte

c'est idiot mais j'arrive pas à changer la police de mon résultat ???

echo "<html><body>
<font-size:20.0pt;font-family:"Arial Narrow";color:red'>$nouveau_texte </font>
</body></html>";

que manque-t-il ?

Merci d'avance
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527 > romantony Messages postés 3 Date d'inscription lundi 14 mai 2007 Statut Membre Dernière intervention 15 mai 2007
16 mai 2007 à 16:28
Car ce code pour le formatage de texte ce n'est pas de l'html mais du css.
Il faudrait faire comme ça:
echo "<html><body>
<span style=\"font-size:20.0pt;font-family:Arial Narrow;color:red\">$nouveau_texte </span>
</body></html>";

0