从 href 以外的字符串中提取 URL



我正在使用jwplayer将YouTube URL替换为YouTube视频。

$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()<>]+(?:([wd]+)|([^,[: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;

        }

当 YouTube URL 在普通文本中时,它运行良好。 我遇到 YOUTUBE URL 是否在 href 标签中的问题,它也在替换 youtube 视频,我只需要替换 href 标签以外的网址

输出$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
)

我将在这里心血来潮地尝试纠正您的第一个正则表达式。

您的解决方案

将您的替换正则表达式更改为以下正则表达式

,该正则表达式仅与不在 html 标记中的 youtube 网址匹配。

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

如果它不起作用,请回发,我将进一步检查您的代码。

相关内容

  • 没有找到相关文章

最新更新