【问题标题】:Replace a part of a url with php用php替换部分url
【发布时间】:2010-12-15 14:46:16
【问题描述】:

你好! 我有一个简单的问题,我正在努力解决,希望你们能看看。 我有一个输入字段,用户可以在其中输入 YouTube 链接,您的典型单页可以正常工作,例如:

youtube.com/watch?v=c3sBBRxDAqk

这个watch?v=11characters 工作正常

但如果用户输入了上述示例以外的任何内容,例如:

youtube.com/watch?v=tC0E1id4raw&feature=topvideos
//or
youtube.com/watch?v=smETLCCPTVo&feature=aso

有没有办法获取上述 2 个网址并删除 watch?v=11characters 之后的任何字符?

所以本质上,转这个

$url = "youtube.com/watch?v=tC0E1id4raw&feature=topvideos"

进入

youtube.com/watch?v=tC0E1id4raw removing & and onwards

由于防止垃圾邮件,我不得不删除 http 位

有没有简单的方法来做到这一点?

【问题讨论】:

标签: php regex url youtube


【解决方案1】:
$url = "youtube.com/watch?v=tC0E1id4raw&feature=topvideos";

list($keep, $chuck) = explode('&', $url);

echo $keep;

【讨论】:

  • 我正在写一个使用 strpos 的答案,但我更喜欢你的答案。点赞!
  • 或者你可以使用 $keep = current(explode('&', $url));
【解决方案2】:

一种方法是使用explode

$url = "youtube.com/watch?v=tC0E1id4raw&feature=topvideos";

$newurl = explode("&", $url);

“&”之前的所有内容都在 $newurl[0] 中,它之后的所有内容都在 $newurl[1] 中。

【讨论】:

  • 这在我给定的情况下效果最好,我想我忘了爆炸哈哈,谢谢你的帮助!
【解决方案3】:

不需要正则表达式:

$parts = parse_url($url);
$params = array();
parse_str($parts['query'], $params);

如果你安装了 PECL pecl_http:

$url = http_build_url($url, 
                      array('query' => 'v='. $params['v']), 
                      HTTP_URL_REPLACE | HTTP_URL_STRIP_FRAGMENT);

或者没有pecl_http:

$url = $parts['scheme'] . $parts['host'] .  $parts['path'] .  '?v=' . $params['v'];

这对于查询参数顺序的变化更加稳健。

参考:parse_urlparse_strhttp_build_url

【讨论】:

  • 我确实对此进行了测试,但它确实有效,但我完全是 php 的菜鸟,我在遵循代码时遇到了一些麻烦,我需要学习更多!谢谢=D
猜你喜欢
  • 1970-01-01
  • 2013-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-15
  • 1970-01-01
  • 2011-07-14
相关资源
最近更新 更多