Page 1 sur 2
Isoler une variable - Merci de votre aide
Posté : 15 déc. 2014, 16:02
par gillescoste2006
Bonjour à tous
Je cherche à isoler une variable
ma programmation est :
<?php the_content(); ?>
<?php endforeach;
wp_reset_postdata();
$content = ob_get_clean();
$extrait = explode(".com/watch?v=",$content);
foreach($extrait as $txt) {
if(preg_match("/(^|[.!?\r\n])\s*(.*?\b&\b.*?($|[.!?\r\n]))/i",$txt)) {
echo $txt."<br />";
}
}
Pour l'instant j'obtient le résultat suivant:
8P4foddGnoM&feature=youtube_gdata" target="_blank" rel="nofollow" id="rssmi_more">lire la suite
Je souhaite n'avoir en affichage que "8P4foddGnoM"
C'est à dire la variable entre ".com/watch?v=" et "&feature" mais je n'arrive pas à isoler la variable entre ces 2 données
Pourriez-vous m'aider SVP
Merci beaucoup
Merci beaucoup
Re: Isoler une variable - Merci de votre aide
Posté : 15 déc. 2014, 16:30
par @rthur
Bonjour,
J'ai l'impression que tu fais des traitements qui ne sont pas forcément nécessaires.
Voici une proposition :
preg_match_all("`com\/watch\?v=([^&]+)&feature`i", $content, $txt);
var_dump($txt); // Pour voir le résultat
En résumé, j'ai utilisé
preg_match_all() pour éviter ton explode et ton foreach puis un motif d'expression régulière pour capturer tout ce qui est entre "com/watch?v=" et "&feature"
Je te recommande fortement le site
Regexper qui est un outil web assez bien fait qui permet de tester les expressions régulières.
Voici un exemple avec la regex que je te propose :
http://tinyurl.com/regexper-phpfrance
Re: Isoler une variable - Merci de votre aide
Posté : 15 déc. 2014, 16:48
par gillescoste2006
Excuses moi car comme tu as put l'en rendre compte je débute en PHP.
J'ai mis ta ligne de programmation
<?php the_content(); ?>
<?php endforeach;
wp_reset_postdata();
$content = ob_get_clean();
$extrait = explode(".com/watch?v=",$content);
foreach($extrait as $txt) {
if(preg_match_all("`com\/watch\?v=([^&]+)&feature`i", $content, $txt);
var_dump($txt);
}
}
Mais ça me sort une erreur
Parse error: syntax error, unexpected ';' in /home/gillescos/www/w/comment-dessiner/wp-content/themes/stuffy/single.php on line 64
Peut-être que je n'aurais pas dut la rajouter comme ça ?
Merci pour ton aide
Re: Isoler une variable - Merci de votre aide
Posté : 15 déc. 2014, 19:33
par @rthur
Pas de problème, on a tous débuté un jour, mais il va falloir que tu fasses un petit effort pour comprendre le code que je t'ai donné, le but n'est pas que tu copie-colles le résultat mais que je te mette sur la piste pour que tu apprennes à le faire par toi-même
Relis bien mon message, pour savoir comment intégrer la ligne que je t'ai donnée et ensuite à toi d'essayer de l'intégrer de la façon qui te semble la + judicieuse.
Tu vas tâtonner au début, c'est normal mais c'est comme cela qu'on apprend.
La documentation PHP, accessible en cliquant sur les noms de fonction sur PHPfrance, devrait bien t'aider à comprendre ce que fait chaque fonction ; et les messages d'erreurs de PHP sont souvent très explicites du moment qu'on y prêtes vraiment attention.
Re: Isoler une variable - Merci de votre aide
Posté : 15 déc. 2014, 19:48
par gillescoste2006
Je me suis apperçu en effet de mon erreur en relisant ta phrase "éviter ton explode et ton foreach"
et j'ai donc mis ça comme cela
<?php the_content();
?>
<?php endforeach;
wp_reset_postdata();
$content = ob_get_clean();
preg_match_all("`com\/watch\?v=([^&]+)&feature`i", $content, $txt);
var_dump($txt); // Pour voir le résultat
?>
Mais là cela me sort un résultat improbable qui est
array(2) { [0]=> array(0) { } [1]=> array(0) { } } echo do_shortcode( '[sociallocker id="74"]' . $content . '[/sociallocker]' ); ?>
J'utilise bien le plugin sociallocker mais je vois pas pourquoi il ressort dans le résultat ici
Re: Isoler une variable - Merci de votre aide
Posté : 15 déc. 2014, 19:58
par gillescoste2006
J'ai bien annulé le code de sociallocker cependant j'obtiens toujours le résultat
array(2) { [0]=> array(0) { } [1]=> array(0) { } }
et je ne sais pas quoi en faire
Merci pour votre aide
Re: Isoler une variable - Merci de votre aide
Posté : 15 déc. 2014, 20:05
par @rthur
Là, il t'indique qu'il n'a pas trouvé ce que tu cherches dans la variable $content
Fait un var_dump($content) pour voir ce qu'elle contient mais à priori elle ne contient pas de lien YouTube.
Re: Isoler une variable - Merci de votre aide
Posté : 15 déc. 2014, 22:28
par gillescoste2006
Etonnant comme résultat d'autant plus que l'url existe bien puisqu'elle ressort avec le script
<?php the_content(); ?>
<?php endforeach;
wp_reset_postdata();
$content = ob_get_clean();
$extrait = explode(".",$content);
foreach($extrait as $txt) {
if(preg_match("/(^|[.!?\r\n])\s*(.*?\bv=\b.*?($|[.!?\r\n]))/i",$txt)) {
echo $txt."<br />";
}
}
et que j'obtiens l'affichage "com/watch?v=8P4foddGnoM&feature=youtube_gdata" target="_blank" rel="nofollow" id="rssmi_more">lire la suite"
Si tu as une idée à me soumettre merci beaucoup
Re: Isoler une variable - Merci de votre aide
Posté : 15 déc. 2014, 22:50
par @rthur
Et que donne var_dump($content) ?
Re: Isoler une variable - Merci de votre aide
Posté : 15 déc. 2014, 23:05
par gillescoste2006
Cela donne ce résultat
string(338) "
Re: Isoler une variable - Merci de votre aide
Posté : 15 déc. 2014, 23:12
par @rthur
Regarde le code source de la page car tu n'as pas affiché le contenu de la variable, il y a quelque chose après la guillemet
Re: Isoler une variable - Merci de votre aide
Posté : 15 déc. 2014, 23:19
par gillescoste2006
La source donne
<div class="post-content box mark-links">
string(338) "<p>Dessin simple. <a href="http://www.youtube.com/watch?v=ayIch-9Didw&feature=youtube_gdata" target="_blank" rel="nofollow" id="rssmi_more">lire la suite</a></p>
Re: Isoler une variable - Merci de votre aide
Posté : 15 déc. 2014, 23:29
par @rthur
&feature
Le & a été encodé en HTML pour devenir &
Corrige le motif regex que je t'ai donné en conséquence et ça va fonctionner

Re: Isoler une variable - Merci de votre aide
Posté : 15 déc. 2014, 23:41
par gillescoste2006
cela m'affiche le résultat suivant
array(2) { [0]=> array(1) { [0]=> string(35) "com/watch?v=ayIch-9Didw&feature" } [1]=> array(1) { [0]=> string(11) "ayIch-9Didw" } }
Peut-x_tu me dire comment j'indique le array(1) { [0]=> string(11) "ayIch-9Didw" } pour le mettre entre mon embed/ et ?version du script ci-dessous
<iframe width="95%" height="315px" src="//www.youtube.com/embed/XXXXXXXXXXXX?version=3&autoplay=0&controls=0&showinfo=0&hl=fr_FR&rel=0" frameborder="0" allowfullscreen></iframe>
Merci beaucoup pour ton aide
Re: Isoler une variable - Merci de votre aide
Posté : 16 déc. 2014, 00:19
par @rthur
Le var_dump($txt) t'indique le contenu de ta variable $txt
Code : Tout sélectionner
array(2) {
[0]=> array(1) {
[0]=> string(35) "com/watch?v=ayIch-9Didw&feature"
}
[1]=> array(1) {
[0]=> string(11) "ayIch-9Didw"
}
}
$txt est donc un tableau
(array) qui comporte 2 éléments
(2)
Le 2ème élément de ce tableau, qui a l'index 1 :
$txt[1]
contient lui même un tableau à 1 élément
array(1) dont l'index est 0 :
$txt[1][0]
et qui lui contient une chaine de 11 caractères
string(11) : "
ayIch-9Didw"