2016-07-08 16 views
1

Ich ersetze youtube URL mit youtube Video mit jwplayer.extrahieren URL von String anderen dann href

$str='<a href="https://www.youtube.com/watch?v=6anwsDt8AhA"> sometext</a>https://www.youtube.com/watch?v=6anwsDt8AhAApr 19, 2015 - Uploaded by Go FreelancerThis feature is not available right now. Please try again later. Published on Apr 19, 2015. How to get anchor ...How to get anchor text/href on click using jQuery? - YouTube Video for get text from html content jquery other than anchor 4:54 https://www.youtube.com/watch?v=6anwsDt8AhA Apr 19, 2015 - Uploaded by Go Freelancer This feature is not available right now. Please try again later. Published on Apr 19, 2015. How to get anchor ...'; 


// $disp_question_desc=$content; 
     $disp_question_desc=str_replace("http", " http", $str); 
     //get list of youtube urls 
     preg_match_all('#\b(?:http(?:s)?:\/\/)?(?:www\.)??(?:youtu\.be\/|youtube\.com\/)[^,\s()<>]+(?:\([\w\d]+\)|([^,[:punct:]\s]|/))#', $disp_question_desc, $urls); 
     if(!empty($urls[0])) 
     { 

      foreach($urls[0] as $key=> $youtubeurl) 
      { 
       $div_id=$div_container."_".$key; 
       $youtubeurl=str_replace("/","\/",$youtubeurl); 
       $youtubeurl=str_replace("?","\?",$youtubeurl); 
       $youtube_content= "<div class='youtube-videos-container' srcval='".$youtubeurl."'><div class='youtube-videos ".$div_id."' id='".$div_id."' ></div></div>"; 
       $disp_question_desc= preg_replace("/".$youtubeurl."/", $youtube_content,$disp_question_desc,1); 
       $youtubeurl=str_replace("\\","",$youtubeurl); 

        if (!preg_match("~^(?:f|ht)tps?://~i", $youtubeurl)) { 
        $youtubeurl = "https://" . $youtubeurl; 
        } 


      } 

echo $disp_question_desc; 


     } 

es funktioniert gut, wenn YouTube-URL in normalen Text. Ich bin vor Problem mit, wenn youtube url in href-Tag, gibt es auch Youtube Video ersetzt, ich brauche nur andere URLs ersetzen dann den href-Tag

Ausgabe von $ Urls [0]:

Array 
(
    [0] => https://www.youtube.com/watch?v=6anwsDt8AhA 
    [1] => https://www.youtube.com/watch?v=6anwsDt8AhAApr 
    [2] => https://www.youtube.com/watch?v=6anwsDt8AhA 
) 

Antwort

1

Ich werde hier eine Laune machen und versuchen, deine erste Regex zu korrigieren.

Ihre Lösung

Ihren Ersatz Regex unten an die einer Änderung, die nur URLs youtube Spiele, die nicht in HTML-Tags sind.

(?<!\")((http:\/\/|https:\/\/)(www.)?(youtube\.com|youtu\.be)\/(watch\?v=|\?v=)([a-zA-Z0-9]+))+(?!\")

Wenn nicht, Post zurück funktioniert und ich werde den Code weiter untersuchen.

+0

Disclaimer: Noch ziemlich neu zu Regex, wenn das falsch ist, nicht funktioniert oder sprengte Ihren Computer, bitte erschießt mich nicht mit Downvotes –

+0

funktioniert nicht, ich habe wie \t geändert \t preg_match_all (' # (?

+0

Soweit ich sehen kann, funktioniert es: [https://regex101.com/r/pL7iC4/1](https://regex101.com/r/pL7iC4/1) Falls Sie etwas gemeint haben sonst, @Naisapurushotham, lass es uns wissen. –