1

我一生都无法弄清楚为什么这不起作用。

$value="http://www.google.com/trends/hottrends/atom/feed?pn=p1";

$startvar="http://";
$endvar="/";

$start = strpos($value,$startvar);

$end = strpos($value,$endvar,$start) + 8;

$results = substr($value,$start,$end-$start);
echo $results;

无论我做什么,它总是会返回我不想要的 http://。我只想要 www.google.com。我在另一个领域使用它,它的行为与我想要的完全一样。如果我使用数字起点而不是 $startvar,我确实可以做到这一点,但这不一定总是有效。

我敢肯定,我错过了一些简单的事情。

谢谢布鲁斯

4

2 回答 2

2

您需要跳过整个$startvar令牌才能到达字符串的下一位。 strpos返回匹配的开始。

$start = strpos($value,$startvar) + strlen($startvar);

尽管您还需要确保strpos尚未返回,但如果未找到false,它将执行此操作:$startvar

$pos = strpos($value, $startvar)
if ($pos !== false)
{
   $start = $pos + strlen($startvar)
   //... other steps here...
}

如果您的目标只是解析 URL,您可以使用 PHP 函数parse_url,这将使您的生活更轻松。

于 2013-01-06T14:53:23.420 回答
1

为什么不使用

$value="http://www.google.com/trends/hottrends/atom/feed?pn=p1";
list($a,$b,$c) = split('[/]',$value);

echo'<br/>a = ',$a;
echo'<br/>b = ',$b;
echo'<br/>c = ',$c;

你会发现这$c就是你的答案。

于 2013-04-07T13:42:34.310 回答