Regex pregmatch "bazen" doğru değil

0 Cevap php

Bir YouTube video numarasını alır ve dizide yerleştirin gereken bir regexpression, bir preg_match_all var, bu yüzden orada daha youtube video, daha diziler yapar. İşte sonuç doğru olduğunu, var:

C1

Array ( [0] => j5-yKhDd64s ) 1Array ( [0] => j5-yKhDd64s ) 1Array ( [0] => j5-yKhDd64s ) 1 

Şimdi, benim sorunum bazen bu oluşmuşsa:

C2

Array ( [0] => _dKtoRU7Tlk http://www.youtube.com/watch?v=_dKtoRU7Tlk http://www.youtube.com/watch?v=_dKtoRU7Tlk ) 1 

Fark görüyor musunuz? C1 bu ararys doğru video kimliğini alır ve böylece, C2 birini kapmak ve sonra başarısız olur ve diziye geri kalanını alıp götürüyor.

C1 youtube bağlantılar bu gibi oldu:

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

C2 youtube bağlantılar bu gibi oldu:

http://www.youtube.com/watch?v=_dKtoRU7Tlk http://www.youtube.com/watch?v=_dKtoRU7Tlk http://www.youtube.com/watch?v=_dKtoRU7Tlk

fark, ve özelliği, C1 in ... olmasıdır. Benim regex tam optimal değildir çünkü onun düşünüyorsun?

    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; 

I bu nasıl düzeltebilirim? Teşekkür ederiz!

0 Cevap