現在の位置: ホーム> 最新記事一覧> substr_count関数を使用するときにサブストリングカウントのために特定の部分をスキップする方法は?

substr_count関数を使用するときにサブストリングカウントのために特定の部分をスキップする方法は?

gitbox 2025-09-19
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 事前に依存する例</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"これは、プリに依存しない出力です,分離効果を示すために使用されます。\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"記事の内容とは何の関係もありませんPHPコードの例。\n"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

</span><span><span class="hljs-meta">&lt;?php</span></span><span>
<span class="hljs-comment">/*
記事タイトル: それを使用する方法substr_count機能の場合、サブストリングカウントの特定の部分をスキップします?
*/</span>

</span><span><span class="hljs-comment">// PHP真ん中,substr_count函数用于统计一个字符串真ん中某个子串出现的次数。</span></span><span>
</span><span><span class="hljs-comment">// 文法: substr_count(string $haystack, string $needle, int $offset = 0, int $length = ?): int</span></span><span>

</span><span><span class="hljs-comment">// 問題はです:発生するサブストリングの数を数えたい場合があります,特定の特定の部品の文字列をスキップします。</span></span><span>
</span><span><span class="hljs-comment">// 例えば,我们想统计字符串真ん中“apple”の数,ただし、四角い括弧で包まれた部品を計算したくない "[apple]"。</span></span><span>

</span><span><span class="hljs-comment">// サンプル文字列:</span></span><span>
</span><span><span class="hljs-variable">$text</span></span><span> = </span><span><span class="hljs-string">"apple [apple] apple (apple) apple"</span></span><span>;

</span><span><span class="hljs-comment">// 一般統計:</span></span><span>
</span><span><span class="hljs-variable">$total_count</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr_count</span></span><span>(</span><span><span class="hljs-variable">$text</span></span><span>, </span><span><span class="hljs-string">"apple"</span></span><span>);
</span><span><span class="hljs-comment">// 出力結果: 5(正方形の括弧を含むapple)</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"一般統計: <span class="hljs-subst">$total_count</span></span></span><span>\n";

</span><span><span class="hljs-comment">// 方法1:規則性を使用して特定の部品を除外します</span></span><span>
</span><span><span class="hljs-comment">// 最初に使用できますpreg_replace数えたくない部分を削除します,次に、もう一度使用しますsubstr_count</span></span><span>
</span><span><span class="hljs-variable">$cleaned_text</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_replace</span></span><span>(</span><span><span class="hljs-string">'/\[.*?\]/'</span></span><span>, </span><span><span class="hljs-string">''</span></span><span>, </span><span><span class="hljs-variable">$text</span></span><span>); </span><span><span class="hljs-comment">// 正方形の括弧内の内容を取り外します</span></span><span>
</span><span><span class="hljs-variable">$count_exclude_brackets</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr_count</span></span><span>(</span><span><span class="hljs-variable">$cleaned_text</span></span><span>, </span><span><span class="hljs-string">"apple"</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"四角い括弧後の統計は除外されます: <span class="hljs-subst">$count_exclude_brackets</span></span></span><span>\n";

</span><span><span class="hljs-comment">// 方法2:手動セグメンテーションと統計</span></span><span>
</span><span><span class="hljs-comment">// 複数のモードをより柔軟にスキップしたい場合,最初に文字列を分割できます,統計は1つずつ</span></span><span>
</span><span><span class="hljs-variable">$parts</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_split</span></span><span>(</span><span><span class="hljs-string">'/(\[.*?\])/'</span></span><span>, </span><span><span class="hljs-variable">$text</span></span><span>); </span><span><span class="hljs-comment">// 正方形のブラケットに分割されます</span></span><span>
</span><span><span class="hljs-variable">$count_manual</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>;
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$parts</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$part</span></span><span>) {
    </span><span><span class="hljs-variable">$count_manual</span></span><span> += </span><span><span class="hljs-title function_ invoke__">substr_count</span></span><span>(</span><span><span class="hljs-variable">$part</span></span><span>, </span><span><span class="hljs-string">"apple"</span></span><span>);
}
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"手動セグメンテーション統計の結果: <span class="hljs-subst">$count_manual</span></span></span><span>\n";

</span><span><span class="hljs-comment">// 要約します:</span></span><span>
</span><span><span class="hljs-comment">// 1. substr_count関数自体は特定の領域を直接スキップできません,通常または文字列操作を組み合わせる必要があります。</span></span><span>
</span><span><span class="hljs-comment">// 2. 使用preg_replace投資されていない部分を削除することは一般的な方法です。</span></span><span>
</span><span><span class="hljs-comment">// 3. 複雑な要求,最初に文字列を分割できます,セグメント別の統計,スキップする必要があるエリアの柔軟な制御。</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>
<hr> <?php //テールに依存しない部分の例エコー "これは、他のコンテンツから記事を分離するために使用されるテール非依存の出力例です。\ n"; ?>
 <span></span>