【问题标题】:Replace text with php using str_replace [duplicate]使用 str_replace 将文本替换为 php [重复]
【发布时间】:2012-01-03 06:50:59
【问题描述】:

可能重复:
parse youtube video id using preg_match
Grab the video ID only from youtube's URLs

我现在使用这样的东西,但我得到了很多错误......

$video_id = $_GET['url'];

$video_id = str_replace('http://www.youtube.com/watch?v=','',$video_id);
$video_id = str_replace('&feature=related','',$video_id);
$video_id = str_replace('&feature=fvwrel','',$video_id);
$video_id = str_replace('&hd=1','',$video_id);
$video_id = str_replace('&feature=relmfu','',$video_id);
$video_id = str_replace('&feature=channel_video_title','',$video_id);
$video_id = str_replace('&feature=list_related','',$video_id);
$video_id = str_replace('&playnext=1','',$video_id);
$video_id = str_replace('_player','',$video_id);

问题在于 youtube 有多个 '&feature=' 的 url 变量,也许还有其他变量

我想从 youtube 网址中提取的唯一内容是唯一的视频 ID

例如://www.youtube.com/watch?v=lgT1AidzRWM&feature=related

id 之后或之前什么都没有

有人可以帮我弄吗?

【问题讨论】:

  • @mario 这个问题要求使用字符串替换,而不是正则表达式。
  • @mc10 只是因为他没有意识到还有更安全的方法..
  • @mario 你确实不需要需要使用preg_match....(见我的回答)

标签: php str-replace


【解决方案1】:

使用 preg_match 将是最有效的方法,您可以在字符串中搜索 watch?v= 直到 & 或特殊字符,并将其放入变量中。

这应该有帮助

http://php.net/manual/en/function.preg-match.php

【讨论】:

    【解决方案2】:

    您最好为此使用正则表达式。 未经测试:

    if(preg_match('/[\?&]v=([^&]*?)/', $video_id, $match))
    {
        $video_id = $match[1];
    }
    else exit('video id not found');
    

    【讨论】:

      【解决方案3】:

      我会使用正则表达式

      preg_match("/v=(\w+)/", $video_id, $matches);
      print_r($matches);
      

      【讨论】:

        【解决方案4】:
        $video_id = parse_url($video_id);    
        parse_str($video_id['query'], $video_id);
        echo $video_id['v'];
        

        【讨论】:

          【解决方案5】:

          你可以这样做:

          $url = "http://www.youtube.com/watch?v=lgT1AidzRWM&feature=related";
          $p_url = parse_url($url);
          parse_str($p_url['query'], $p_param);
          print_r($p_param['v']);
          

          示例:http://codepad.org/BiWKxfSZ

          【讨论】:

          • 哇!那太快了!真的这就是我要找的。对不起,我没有考虑过。
          • @m3tsys 欢迎您^_^
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-10-21
          • 2016-01-11
          • 2016-10-07
          • 2015-03-22
          • 1970-01-01
          • 1970-01-01
          • 2013-07-09
          相关资源
          最近更新 更多