[CURL] identification sur un site

Eléphant du PHP | 89 Messages

10 août 2010, 16:18

L'erreur persiste même en enlevant les crochets, je verrai ca un peu plus tard, ne t'embête pas tu m'a déja bcp apporté :)
<?php
define('AUTHENTIFICATION', 'http://steamcommunity.com/profiles/76561197984780389');
libxml_use_internal_errors(true);
$doc = new DOMDocument();
$doc->loadHTMLFile(AUTHENTIFICATION);
$xpath = new DOMXPath($doc);
$sid = $xpath->query('//div[@class="actionItemIcon"]/a/@href')->item(0)->href;

echo $sid
?>

ViPHP
ViPHP | 5462 Messages

10 août 2010, 16:22

$xpath->query('//div[@class="actionItemIcon"]/a/@href')->item(0)->value;
et pas
$xpath->query('//div[@class="actionItemIcon"]/a/[@href]')->item(0)->href;

Eléphant du PHP | 89 Messages

10 août 2010, 16:25

Whaoo, quel co*** que je suis :D .
Merci mille fois :mrgreen:

Eléphant du PHP | 89 Messages

11 août 2010, 12:08

J'aimerai avoir ton avis sur une autre partie du code, cette fois ci c'est du XML.
1.<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2.<friendsList>
3.  <steamID64>xxxxxxxxxxx</steamID64>
4.  <steamID>
5.     <![CDATA xxxxxx  ]></steamID>
6.    <friends>
7.        <friend>xxxxxx</friend>
8.        <friend>xxxxxx</friend>
9.        <friend>xxxxxx</friend>
10.       <friend>xxxxxx</friend>
11.       <friend>xxxxxx</friend>
12.    </friends>
13.  </friendsList>
Voici ma reqûete xpath:
$url     = $xpath->query('//friendsList/friends/friend*')->item(0)->value();
echo $url;
C'est toujours ma requête qui pose problème, je veut lire toutes les valeurs des enfants friends.
J'ai une erreur de ce type Call to a member function item() on a non-object

EDIT:
J'ai essayé avec SimpleXml ca marche, mais y a un hic au niveau de la structure.
$dom = new DOMDocument;
$dom->loadXML('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<friendsList>
  <steamID64>76561197984780389</steamID64>
  <steamID>
    <![CDATA[3P SLK[L] ;g00dByMyL0ver]]></steamID>
    <friends>
      <friend>76561198004593774</friend></friends>
  </friendsList>'); 
$s = simplexml_import_dom($dom);
echo $s->friends[0]->friend;
Ca m'affiche bien l'id de mon ami: 76561198004593774 en revanche ce qui est embattant c'est que si je remplace la chaine de caractère XML par une variable
$dom->loadXML('$data_string')
j'ai une erreur... Je voudrais lire le flux en direct.

ViPHP
ViPHP | 5462 Messages

11 août 2010, 14:41

$xpath->query('//friendsList/friends/friend*')->item(0)->value();
pourquoi avoir mis le * , et pourquoi avoir fais value() au lieu de value ?
faut bien comprendre que query rend un NodeList et que value depend de l'item (Attr, Text, Element...)

Eléphant du PHP | 89 Messages

11 août 2010, 15:29

J'ai utilié * pour séléctionner tous les enfants. :D
$doc     = new DOMDocument();
$doc->loadXML($page_friends);
$xpath   = new DOMXPath($doc);
echo "<pre>";
$url = $xpath->query('//friendsList/friends/friend')->item(0)->value;
echo $url;
echo "</pre>";
Notice: Trying to get property of non-object in E:\wamp2\www\Steam Number One\index1.php on line 119

ViPHP
ViPHP | 5462 Messages

11 août 2010, 15:36

J'ai utilié * pour séléctionner tous les enfants. :D
l'expression les selectionne tous, c'est pour ca que j'utilisai item(0) c'est pour prendre le premier.


la il va te renvoiyer un DOMElement et pour voir son contenu c'est nodeValue pas value :wink:
$doc     = new DOMDocument();
$doc->loadXML('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<friendsList>
  <steamID64>76561197984780389</steamID64>
  <steamID>
    <![CDATA[3P SLK[L] ;g00dByMyL0ver]]></steamID>
    <friends>
      <friend>76561198004593774</friend></friends>
  </friendsList>');
$xpath   = new DOMXPath($doc);
echo "<pre>";
$url = $xpath->query('//friendsList/friends/friend')->item(0)->nodeValue;
echo $url;
echo "</pre>";
EDIT : si tu veux tous les afficher tu boucles le nodelist
$url = $xpath->query('//friendsList/friends/friend');

foreach($url as $friend)
{
	echo $friend->nodeValue . "\n";
}
mais pour le xml utilise simpleXML

Eléphant du PHP | 89 Messages

11 août 2010, 23:56

Merci beaucoup de m'avoir éclairci sur certains points, et effectivement je comprend mieux. :mrgreen:
Pour utiliser simpleXML faut-il activer une extension dans le ini?
Est ce que il faut déclaré cette partie:
libxml_use_internal_errors(true);
$doc = new DOMDocument();
Cordialement =D>

ViPHP
ViPHP | 5462 Messages

12 août 2010, 00:01


Eléphant du PHP | 89 Messages

12 août 2010, 01:02

J'ai essayé d'afficher les id en utilisanr SimpleXML:
libxml_use_internal_errors(true);
$xml          = simplexml_load_string($data); //good
$result       = $xml->xpath('//friendsList/friends/friend');
while(list( , $node) = each($result)) {
    echo $node,"\n";
}
Et ca marche aussi :P

ViPHP
ViPHP | 5462 Messages

12 août 2010, 01:05

ca serais mieux de la faire avec un foreach
foreach($result as $node))
{
    echo $node,"\n";
}

Eléphant du PHP | 89 Messages

12 août 2010, 01:07

ah effectivement les deux marche, mais peux tu me dire pourquoi favoriser le foreach ?
Parce que c'est fait que pour les tableau?
Merci

ViPHP
ViPHP | 5462 Messages

12 août 2010, 01:22

ah effectivement les deux marche, mais peux tu me dire pourquoi favoriser le foreach ?
Parce que c'est fait que pour les tableau?
Merci
parce que il fais la meme chose que ton while mais sans avoir besion de fonction en plus (list et each)
et surtout parce que le while est plus difficile a comprendre que le foreach :wink:

Wooreobseli
Invité n'ayant pas de compte PHPfrance

18 juil. 2011, 00:39

That to.I adapted to to be experiencing some watches
But I ever forgot to attire them on and then IDK what happened to them
They're collecting dust somewhere

It seems the funereal bands are sized differently from the rest of the doctor reprimand! on the gunmetal i ordered, the black bands now okay, but the put of the outfit went on too easily.

Wooreobseli
Invité n'ayant pas de compte PHPfrance

19 juil. 2011, 02:06

Delightful :) Your star shines auspices of these pictures :)

I really fancy the look. Acidulous, perspicacious, knowing, if a little the go forward(nothing reverse with that), something I would debilitate .