URLのルートより/から/までををぬきだしたいのですが、まず、1番目のルートの位置は取得できましたが、2番目が取得できません。

$str = "./product/abc/product.htm";
$pos1 = strpos($str, "/");
$pos2 = strpos($str, "/",$pos1);
echo $pos2;
としても$POS1と同じ値しかでません。どうしたらいいでしょう?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2008/03/03 03:05:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:khoshi3 No.1

回答回数71ベストアンサー獲得回数12

ポイント60pt

phpのご質問ということでよろしいですよね。

下記のように'/'が見つかった次の位置から探させるために、2回目以降はoffsetを'+1'するのが簡単かと思います。:

$str = "./product/abc/product.htm";

$pos1 = strpos($str, "/");

$pos2 = strpos($str, "/", $pos1 + 1);

echo "$pos1,$pos2\n"; // 結果表示

または、explode() (http://php.benscom.com/manual/ja/function.explode.php) を以下のように使うのはいかがでしょうか?

list($dummy, $p1, $p2) = explode('/', $str);

echo implode(':', array($dummy, $p1, $p2)). "\n"; // 結果表示

id:tezcello No.2

回答回数460ベストアンサー獲得回数69

ポイント10pt

preg_match_all() はいかがでしょうか?

http://jp2.php.net/manual/ja/function.preg-match-all.php

$str = "./product/abc/product.htm";
preg_match_all('/[^\/]+/', $str, $res);

var_dump($res);

結果は

array(1) {

[0]=>

array(4) {

[0]=>

string(1) "."

[1]=>

string(7) "product"

[2]=>

string(3) "abc"

[3]=>

string(11) "product.htm"

}

}

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません