4

紐があって、

$string = 'フー、バー、テスト、';

私がやりたいのは、文字列内のコンマの数を数えることだけです。

しかし、すべてが無限ループにつながります。

だから、私は#1を試しました:

$カウント = 0;

while($pos = strpos($string, ',') !== FALSE){
    $count++;
    // Never ends
}

また、#2、

while(true){
  if ( strpos($string, ',') !== FALSE ){
     $count++;
  } else {
    break;
  }
}

どちらも終わらない。問題はどこですか?

4

4 に答える 4

3

strpos()の最初の出現を返す$needleため、 different を指定しない限り$offset、常に同じ結果が得られるため、無限ループになります。

どうしても を使用したい場合はstrpos()、これを試してください:

$pos=0;
while(($pos = strpos($string, ',',$pos)) !== FALSE){
    $count++;
    $pos++;
    // This ends
}

もちろんsubstr_count()、物事を簡単にするために使用できます。

編集

ライブデモ

于 2013-02-18T06:59:55.103 に答える
2

これを試して :

$text = 'Foo, Bar, Test,';
echo substr_count($text, ',');

参照: http://php.net/manual/en/function.substr-count.php

于 2013-02-18T06:58:27.857 に答える
0

または、substr_count が適合しない場合は、これを試してください。

$pos = -1;
$count=0;
while( $pos = strpos($in, ',', $pos+1) !== FALSE){
     $count++;
     }

!==FALSE が絶対に必要かどうかはテストしませんでした。mb_strpos を使用する場合は使用しません。

于 2013-11-14T13:02:38.393 に答える