我为我的生活无法弄清楚为什么这不起作用。
$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,我确实可以使用它,但这不一定会一直有效。
我确信这很简单,我很想念。
由于 布鲁斯
答案 0 :(得分: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,这将使你的生活更轻松。
答案 1 :(得分: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
是您的答案。