我正在使用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]+))+(?!")
如果它不起作用,请回发,我将进一步检查您的代码。