<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>