8791 sujets

Développement web côté serveur, CMS

Pages :
Bonjour à tous,

j'aurais besoin de votre aide, voilà je voudrais récupérer le lien de ma video qui est se trouve ds les flashvars, dans la balise script donc, voilà le code que j'ai.


<?php $oldSetting = libxml_use_internal_errors( true );
libxml_clear_errors(); 
$html = new DOMDocument(); 
$html->loadHtmlFile( 'http://www.monsite.com/videos/lavideo.html' ); 
$xpath = new DOMXPath( $html ); $links = $xpath->query( '//a' ); 
foreach ( $links as $link ) { echo $link->getAttribute( 'href' ), "\n";
} libxml_clear_errors(); libxml_use_internal_errors( $oldSetting ); ?>


Et ci-dessous ce que je compte récupérer, uniquement le lien
so.addVariable("contenu_video","http://monsite.com/yY3jI4TEXqqB2yaBUpU9Fg/mavideo.flv");


merci Smiley smile
Modifié par julien67 (09 Feb 2010 - 21:58)
Salut,

ben ça serait plus facile de te répondre en voyant ce qui est récupéré... donc avec une url valide. Smiley cligne
je vais faire un éffort pour le lien donc voilà le parser sur mon autre site:
http://clipofficial.com/parser.php

et voilà le lien de la video à titre d'exemple:
http://clipofficial.com/video/DAB74Y9ONN1D/Obvious-Westlife-Karaoke-Music


La prochaine fois je m'apstiendrai de dire "site pour adulte" Smiley biggol
julien67 a écrit :
La prochaine fois je m'apstiendrai de dire "site pour adulte"
Yep ! Et je précise que ça n'est pas un jugement de valeur mais simplement que ça va à l'encontre des règles du forum. Smiley cligne

Tu pourrais essayer
foreach ( $links as $link ) {
	$href = $link->getAttribute( 'href' );
	$pattern = '#/video/#';
	if( preg_match( $pattern, $href )) {
		echo '<p>'.$href."</p>\n";
	}
} libxml_clear_errors(); libxml_use_internal_errors( $oldSetting );
J'ai essayé ton code et çà me donne une page blanche

j'ai modifié à ce que j'obtienne tous ce qui se trouve dans la balise script

seulement j'ai du mal avec les expressions rationnelles.


<?php $oldSetting = libxml_use_internal_errors( true );
libxml_clear_errors(); 
$html = new DOMDocument(); 
$html->loadHtmlFile( 'http://clipofficial.com/video/DAB74Y9ONN1D/Obvious-Westlife-Karaoke-Music' ); 
$tagname = $html->getElementsByTagName('script');
foreach($tagname as $resultat)
    echo $resultat->firstChild->nodeValue . "<br />";
libxml_clear_errors(); libxml_use_internal_errors( $oldSetting );
$recherche = preg_match("/([[:punct:]](content_video)[[:punct:]](\,)[[:punct:]]((.|\n)*?)[[:punct:]])/i", $resultat);
print_r($resultat);
?>

J'ai cette érreur:
Warning: preg_match() expects parameter 2 to be string,
julien67 a écrit :
J'ai cette érreur:
Warning: preg_match() expects parameter 2 to be string,
Ben oui : le preg_match devrait se trouver dans la boucle foreach.

Par ailleurs le print_r($resultat) ne vas rien te donner et $recherche vaudra true ou false.

Questions :
* pourquoi n'es-tu pas parti de mon bout de code ?
* pourquoi m'avoir donné un mauvais exemple de retour ? C'est en voyant que toutes les urls contenaient /video/ que j'ai fait ma regexp alors qu'avec la page que tu donnes ça n'est plus le cas...
Modifié par Heyoan (09 Feb 2010 - 18:45)
A essayer :
foreach($tagname as $resultat) {
    $resultat = $resultat->firstChild->nodeValue;
    $pattern = '#contenu_video","(.*\.flv)"#'; 
    preg_match( $pattern, $resultat, $matches );
    echo '<pre>';
    print_r($matches[1]);
    echo '</pre>';
} libxml_clear_errors(); libxml_use_internal_errors( $oldSetting );

Modifié par Heyoan (09 Feb 2010 - 19:18)
j'ai rajouté ton code comme suit:

<?php $oldSetting = libxml_use_internal_errors( true );
libxml_clear_errors(); 
$html = new DOMDocument(); 
$html->loadHtmlFile( 'http://clipofficial.com/video/DAB74Y9ONN1D/Obvious-Westlife-Karaoke-Music' ); 
//$xpath = new DOMXPath( $html ); $links = $xpath->query( '//a' ); 
//$tagname-> getElementsByTagName('script');
$tagname = $html->getElementsByTagName('script');
foreach($tagname as $resultat) { 
    $resultat = $resultat->firstChild->nodeValue; 
    $pattern = '#contenu_video","(.*)\.flv#';  
    preg_match( $pattern, $resultat, $matches ); 
    echo '<pre>'; 
    print_r($matches[1]); 
    echo '</pre>'; 
} libxml_clear_errors(); libxml_use_internal_errors( $oldSetting );
?>


Et çà marche... Smiley biggrin

par contre, l'extension manque alors j'ai rajouté comme suit:

print_r($matches[1].'.flv');


çà me retourne une bouche de .flv??
julien67 a écrit :
par contre...
Tu n'as donc pas vu que j'avais édité mon code précédent.
merci Heyoan, tu n'imagines pas à quel point j'avais besoin de ce code, donc un grand merci!!

Php n'est vraiment pas facile.
Moi mon fort c'est plutot (x)html css intégration.
Dis moi, saurais tu comment faire pour ajouté un user agent mozilla par éxemple ds le code précédent??

J'ai trouvé çà, je sais pas comment faire le lien

$s_url = 'http://clipofficial.com/video/DAB74Y9ONN1D/Obvious-Westlife-Karaoke-Music';
$s_user_agent = 'Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.0.1) Gecko/20020921 Netscape/7.0';
$s_html = $o_sc->browse($s_url, $s_user_agent);

Mis à part l'autre possibilité d'ajouté l'user agent directement ds .htacces
Dis moi heyoan Smiley smile , le code php me retourne directement le lien. Comment fait on pour assigner le résultat dans une variable, c'est pour pouvoir faire appel de la variable ds ma page html.


Assign('mainurl',$mainurl);


merci Smiley cligne
julien67 a écrit :
Dis moi heyoan...
Pour info je ne suis pas le seul à répondre dans ce salon ! Smiley langue

julien67 a écrit :
Comment fait on pour assigner le résultat [d'une fonction] dans une variable
Il suffit de ne pas faire d'echo (ou de print) dans la fonction mais de faire un return.

Par exemple :
function Assign($libelle, $valeur) {
	return '<a href="'.$valeur.'">'.$libelle.'</a>';
}

$mainurl = 'http://www.google.fr/';
$lien = Assign('mainurl', $mainurl);
echo $lien;

Modifié par Heyoan (14 Feb 2010 - 21:58)
Pages :