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 に答える