私はregexpressionでpreg_match_allを持っています。これはyoutubeのビデオ番号をとり、配列に配置する必要があります。そのため、より多くのyoutubeビデオがあるほど、配列が多くなります。ここでは正しい結果、だ:Regex pregmatch not correct "sometimes"
C2
Array ([0] => _dKtoRU7Tlk http://www.youtube.com/watch?v=_dKtoRU7Tlk http://www.youtube.com/watch?v=_dKtoRU7Tlk) 1
は、違いを参照してください?
C1
Array ([0] => j5-yKhDd64s) 1Array ([0] => j5-yKhDd64s) 1Array ([0] => j5-yKhDd64s) 1
は今、私の問題は時々この問題が発生していますかC1には、ararysのビデオIDが正しいので、C2を取得して失敗し、残りの部分をアレイに取り込みます。
C1ユーチューブリンクはこのようなものだった: http://www.youtube.com/watch?v=j5-yKhDd64s&feature=email&email=comment_reply_received
comment_reply_receivedhttp://www.youtube.com/watch?v=j5-yKhDd64s&feature=email&email=comment_reply_received http://www.youtube.com/watch?v=j5-yKhDd64s &機能=メール&メール=
C2 youtube linksは次のとおりです:
http://www.youtube.com/watch?v=_dKtoRU7Tlk http://www.youtube.com/watch?v=_dKtoRU7Tlk http://www.youtube.com/watch?v=_dKtoRU7Tlk
差がC1に... &機能があるということです。私は正規表現が完全に最適ではないので、そのことを考えていますか?
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;
これはどのように修正できますか?ありがとうございました!
ありがとう!最後の「より良い」アドバイスについて、あなたが念頭に置いていたことについて、より多くのことを知りたいと思います。 "通常の方法でURLを解析する"、これは何を意味するのですか、少しの例ですか? – Karem
@Karem:例。テキスト( '#http:// [^ \ s] +#')からURL全体を照合し、http://php.net/manual/en/function.parse-url.phpを見てから、クエリ部分と 'parse_str'を使って別のバールに分割します。 – mvds
それであなたが最初の試合では、リンクがあれば、リンクを取って質問し、取る?vビデオリンクを取得する...正しい? – Karem