<span><span><span class="hljs-meta"><?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">?></span></span><span>
<hr>
</span><span><span class="hljs-meta"><?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">// 如果要更靈活地跳過多種模式,可以先分割字符串,再逐段統計</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">?></span></span><span>
</span></span>
<hr> <?php // 尾部無關部分示例echo "這是尾部無關輸出示例,用於分隔文章與其他內容。\n"; ?>
<span></span>