當前位置: 首頁> 最新文章列表> 什麼是PHP 中的strpos 函數?附基本用法和簡單示例說明

什麼是PHP 中的strpos 函數?附基本用法和簡單示例說明

gitbox 2025-06-15

在PHP 編程中, strpos是一個常用的字符串函數,用於查找某個子字符串首次出現的位置。這個函數特別有用,當你需要檢查一個字符串中是否存在某個特定的子字符串時,它能幫助你快速定位位置。如果找到了, strpos會返回該子字符串的第一個出現位置(基於0 的索引);如果找不到,則返回false

基本語法

<span><span><span class="hljs-title function_ invoke__">strpos</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$needle</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$offset</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>): </span><span><span class="hljs-keyword">mixed</span></span><span>
</span></span>

參數解釋:

  • $haystack :要搜索的字符串。

  • $needle :要查找的子字符串。

  • $offset :可選參數,表示從$haystack的哪個位置開始搜索,默認為0(從頭開始搜索)。

返回值:

  • 如果找到$needle ,則返回它在$haystack中首次出現的位置(整數,基於0 的索引)。

  • 如果沒有找到$needle ,則返回false

示例

示例1:基本查找

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">"Hello, welcome to the PHP world!"</span></span><span>;
</span><span><span class="hljs-variable">$needle</span></span><span> = </span><span><span class="hljs-string">"PHP"</span></span><span>;

</span><span><span class="hljs-variable">$position</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strpos</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$position</span></span><span> !== </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"找到 '<span class="hljs-subst">$needle</span></span></span><span>' 在字符串中的位置: </span><span><span class="hljs-subst">$position</span></span><span>";
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"'<span class="hljs-subst">$needle</span></span></span><span>' 未在字符串中找到";
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

輸出

 <span><span>找到 </span><span><span class="hljs-string">'PHP'</span></span><span> 在字符串中的位置: 18
</span></span>

在這個例子中, strpos查找的是字符串"PHP""$haystack"中的位置。返回的結果是18,因為"PHP"從第18 個字符開始。

示例2:從指定位置開始查找

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">"Hello, welcome to the PHP world!"</span></span><span>;
</span><span><span class="hljs-variable">$needle</span></span><span> = </span><span><span class="hljs-string">"o"</span></span><span>;

</span><span><span class="hljs-variable">$position</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strpos</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>);  </span><span><span class="hljs-comment">// 從第5個字符位置開始查找</span></span><span>

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$position</span></span><span> !== </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"從位置 5 開始找到 'o' 在字符串中的位置: <span class="hljs-subst">$position</span></span></span><span>";
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"'o' 未在字符串中找到"</span></span><span>;
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

輸出

 <span><span>從位置 </span><span><span class="hljs-number">5</span></span><span> 開始找到 </span><span><span class="hljs-string">'o'</span></span><span> 在字符串中的位置: </span><span><span class="hljs-number">7</span></span><span>
</span></span>

在這個示例中, strpos會跳過前五個字符(即"Hello" ),然後從第5 個字符開始查找"o" 。結果返回的是第一個"o"出現的位置,即第7 個字符。

示例3:查找字符串中不存在的子字符串

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">"Hello, welcome to the PHP world!"</span></span><span>;
</span><span><span class="hljs-variable">$needle</span></span><span> = </span><span><span class="hljs-string">"Python"</span></span><span>;

</span><span><span class="hljs-variable">$position</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strpos</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$position</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"'<span class="hljs-subst">$needle</span></span></span><span>' 未在字符串中找到";
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"找到 '<span class="hljs-subst">$needle</span></span></span><span>' 在字符串中的位置: </span><span><span class="hljs-subst">$position</span></span><span>";
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

輸出

 <span><span><span class="hljs-string">'Python'</span></span><span> 未在字符串中找到
</span></span>

在這個例子中, "Python"並不存在於$haystack中, strpos會返回false ,並且我們通過===比較操作符來確保准確判斷。

注意事項

  1. 返回值的比較:需要特別注意, strpos返回的結果可能是0 ,這意味著子字符串出現在字符串的開頭。由於0被視為false ,如果直接使用if ($position)進行判斷,可能會導致錯誤的判斷結果。因此,應該使用!== false來檢查返回值是否為false

  2. 區分大小寫strpos是區分大小寫的,如果你需要不區分大小寫的查找,可以使用stripos函數。

stripos示例:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">"Hello, welcome to the PHP world!"</span></span><span>;
</span><span><span class="hljs-variable">$needle</span></span><span> = </span><span><span class="hljs-string">"php"</span></span><span>;

</span><span><span class="hljs-variable">$position</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stripos</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>);  </span><span><span class="hljs-comment">// 不區分大小寫的查找</span></span><span>

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$position</span></span><span> !== </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"找到 '<span class="hljs-subst">$needle</span></span></span><span>'(不區分大小寫)在字符串中的位置: </span><span><span class="hljs-subst">$position</span></span><span>";
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"'<span class="hljs-subst">$needle</span></span></span><span>' 未在字符串中找到";
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

輸出

 <span><span>找到 </span><span><span class="hljs-string">'php'</span></span><span>(不區分大小寫)在字符串中的位置: 18
</span></span>

總結

strpos是PHP 中非常實用的字符串函數,能夠幫助你高效地查找子字符串的首次出現位置。通過合理的使用,可以方便地處理字符串搜索的需求。在開發中,掌握這個函數的基本用法,可以大大提高代碼的效率和可讀性。