我有这个链接:http://www.youtube.com/e/fIL7Nnlw1LI&feature=related
我需要在PHP中使用一种方法来完全删除链接中每个&
之后的所有内容。
所以它会变成:http://www.youtube.com/watch?v=fIL7Nnlw1LI
注意它可能有多个&
EACH&,&之后的一切包含,必须从字符串中删除
如何在PHP中完成?
答案 0 :(得分:3)
你可以这样做::
$var = "http://www.youtube.com/e/fIL7Nnlw1LI&feature=related";
$url = explode("&", $var);
$url = $url[0]; //URL is now what you want, the part before First "&"
答案 1 :(得分:3)
正如我在rpevious中写的那样你可以使用这个1行脚本:
$str = strtok($str,'&');
答案 2 :(得分:1)
您可以将strpos
与substr
合并:
$spos = strpos($s, "&");
$initial_string = $spos ? substr($s, 0, $spos) : $s;
答案 3 :(得分:1)
$url = "http://www.youtube.com/e/fIL7Nnlw1LI&feature=related";
$ampPos = strpos($var, '&');
if ($ampPos !== false)
{
$url = substr($url, 0, $ampPos);
}
不要使用explode,regexp或任何其他贪心算法,这会浪费资源。
编辑(添加了性能信息):
在preg_match文档中:http://www.php.net/manual/en/function.preg-match.php
使用以下代码测试自己:
$url = "http://www.youtube.com/e/fIL7Nnlw1LI&feature=related&bla=foo&test=bar";
$time1 = microtime(true);
for ($i = 0; $i < 1000000; $i++)
{
explode("&", $url);
$url = $url[0];
}
$time2 = microtime(true);
echo ($time2 - $time1) . "\n";
$time1 = microtime(true);
for ($i = 0; $i < 1000000; $i++)
{
$ampPos = strpos($url, "&");
if ($ampPos !== false)
$url = substr($url, 0, $ampPos);
}
$time2 = microtime(true);
echo ($time2 - $time1) . "\n";
给出以下结果:
2.47602891922
2.0289251804352
答案 4 :(得分:0)
您可以使用explode函数()来分割字符串。 $ url = explode(“&amp;”,$ needle)然后获取第一个数组元素。
答案 5 :(得分:0)