• ベストアンサー

文字列の検索について

こんにちわ。文字列の検索について質問があります。 ↓のコードは、 「$str という文字列の中に"<!>" という文字列が含まれていたら、その都度その位置を 知らせる」と意図したものです。 $str の中に "<!>" が3つ含まれていたら、3回それらの位置を知らせるはずです。 しかし、実際は、最後の $iの位置だけ出力されます。 どこに問題があるのでしょうか? よろしくお願いいたします。 -------コード(ココカラ)------- for ($i=1; $i<length; $i++) { $strsub=substr($str, $i, $i+2); if ($strsub == "<!>") { echo $i; echo "\r\n"; } } -------ココマデ-------

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

たとえば、こんなかんじ <? $str="0<!>123<!>456<!>789<!>abc"; for ($i=0; $i<strlen($str); $i++){ $strsub=substr($str, $i, 3); if ($strsub == "<!>"){ echo $i; echo "\r\n"; } } ?> 元ソースのlengthってなに? substrの引数がちがいますね。 マニュアルみながらやりましょう。

nice-chap
質問者

お礼

ありがとうございました。 当方の勘違いでした。 SUBSTRの引数を間違っていました。

その他の回答 (1)

  • auty
  • ベストアンサー率58% (284/486)
回答No.1

phpに関しては分からないものですが、 substr($str, $i, $i+2) は、 substr($str, $i, 3) ではありませんか。(切り出す長さ)

nice-chap
質問者

お礼

ありがとうございます。 当方の勘違いで、SUBSTRの引数を間違っていました。