[RESOLU] Isoler une variable - Merci de votre aide

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Isoler une variable - Merci de votre aide

Re: Isoler une variable - Merci de votre aide

par gillescoste2006 » 16 déc. 2014, 08:46

Merci beaucoup pour ton aide

Re: Isoler une variable - Merci de votre aide

par @rthur » 16 déc. 2014, 00:19

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"

Re: Isoler une variable - Merci de votre aide

par gillescoste2006 » 15 déc. 2014, 23:41

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

par @rthur » 15 déc. 2014, 23:29

&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

par gillescoste2006 » 15 déc. 2014, 23:19

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

par @rthur » 15 déc. 2014, 23:12

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

par gillescoste2006 » 15 déc. 2014, 23:05

Cela donne ce résultat
string(338) "

Re: Isoler une variable - Merci de votre aide

par @rthur » 15 déc. 2014, 22:50

Et que donne var_dump($content) ?

Re: Isoler une variable - Merci de votre aide

par gillescoste2006 » 15 déc. 2014, 22:28

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

par @rthur » 15 déc. 2014, 20:05

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

par gillescoste2006 » 15 déc. 2014, 19:58

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

par gillescoste2006 » 15 déc. 2014, 19:48

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

par @rthur » 15 déc. 2014, 19:33

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

par gillescoste2006 » 15 déc. 2014, 16:48

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

par @rthur » 15 déc. 2014, 16:30

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