文字列内の特定の文字のすべての位置を見つける必要があります。次のコードを使用しています
$pos = 0;
$positions = array();
while( $pos = strpos($haystack,$needle,$pos){
$positions[] = $pos;
$pos = $pos+1;
}
このコードの問題は、needle
が位置 1 にあるときに 1 を返し、ループに入らないことです。
だから私は次のことを試しました
$pos = 0;
$positions = array();
while( ($pos = strpos($haystack,$needle,$pos) || (strpos($haystack,$needle,$pos)=== 0){
$positions[] = $pos;
$pos = $pos+1;
}
と、
$pos = 0;
$positions = array();
while( ($pos = strpos($haystack,$needle,$pos) || (strpos($haystack,$needle,$pos) != false){
$positions[] = $pos;
$pos = $pos+1;
}
しかし、何も機能していないようです。他に方法はありますか。
私が試した2つの選択肢は私に与えます
Allowed memory size of 268435456 bytes exhausted
これは、メモリの問題よりもプログラミング エラーに関係していると思います。
助けてください。