J'ai un preg_match_all avec une regexpression, qui devrait prendre un numéro de vidéo youtube et le placer dans le tableau, donc plus il ya de vidéos youtube, plus il y a de tableaux. Voilà le résultat, qui sont corrects:Regex pregmatch pas correct "parfois"
C1
Array ([0] => j5-yKhDd64s) 1Array ([0] => j5-yKhDd64s) 1Array ([0] => j5-yKhDd64s) 1
Maintenant, mon problème est parfois cela se produit:
C2
Array ([0] => _dKtoRU7Tlk http://www.youtube.com/watch?v=_dKtoRU7Tlk http://www.youtube.com/watch?v=_dKtoRU7Tlk) 1
Voir la différence? À C1 il prend l'id vidéo correcte dans les ararys et ainsi, le C2 attrape un puis échoue et prend le reste dans le tableau.
Les C1 liens youtube était comme ça:
http://www.youtube.com/watch?v=j5-yKhDd64s&feature=email&email=comment_reply_received http://www.youtube.com/watch?v=j5-yKhDd64s & feature = email & email = comment_reply_received http://www.youtube.com/watch?v=j5-yKhDd64s&feature=email&email=comment_reply_received
Les C2 liens youtube était comme ça:
http://www.youtube.com/watch?v=_dKtoRU7Tlk http://www.youtube.com/watch?v=_dKtoRU7Tlk http://www.youtube.com/watch?v=_dKtoRU7Tlk
la différence est qu'il ya la fonction & ... dans le C1. Je pense que c'est parce que mon regex n'est pas complètement optimale?
if (preg_match_all("#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+#", $content, $matches, PREG_SET_ORDER)) {
foreach($matches as $m) {
echo print_r($m);
}
}
$nContent = preg_replace("#(?:https?://)?(?:www\.)?youtube\.com/(?:[^\s]*)#", '', $content);
echo $nContent;
Comment puis-je résoudre ce problème? Je vous remercie!
Merci! J'aimerais en savoir un peu plus sur ce que vous pensiez du dernier "meilleur" conseil. "Parse l'url d'une manière normale", que voulez-vous dire par là, petit exemple? – Karem
@Karem: E.g. en faisant correspondre des url entières du texte ('#http: // [^ \ s] + #') et en regardant http://php.net/manual/fr/function.parse-url.php, puis la partie query et utilisez 'parse_str' pour le diviser en vars séparés. – mvds
Donc, vous voulez dire par premier match s'il ya un lien, puis prenez le lien prendre une requête et prendre? V pour obtenir le lien vidéo .. correct? – Karem