PHP 日本研討會 2024

stristr

(PHP 4,PHP 5,PHP 7,PHP 8)

stristr不區分大小寫的 strstr()

描述

stristr(字串 $haystack, 字串 $needle, 布林值 $before_needle = false): 字串|false

傳回 haystack 中從第一次出現 needle 開始(包含 needle)到結尾的所有字串。

參數

haystack

要搜尋的字串

needle

要搜尋的字串。

在 PHP 8.0.0 之前,如果 needle 不是字串,則會將其轉換為整數,並將其作為字元的序數值套用。從 PHP 7.3.0 開始,此行為已被棄用,強烈建議不要依賴它。根據預期的行為,needle 應明確轉換為字串,或明確呼叫 chr()

before_needle

如果為 truestristr() 會傳回 haystack 中第一次出現 needle 之前的部分(不包括 needle)。

會以不區分大小寫的方式檢查 needlehaystack

傳回值

傳回符合的子字串。如果找不到 needle,則傳回 false

變更日誌

版本 描述
8.2.0 大小寫摺疊不再依賴使用 setlocale() 設定的地區設定。只會執行 ASCII 大小寫摺疊。非 ASCII 位元組會依其位元組值進行比較。
8.0.0 needle 現在接受空字串。
8.0.0 不再支援將 int 作為 needle 傳遞。
7.3.0 已棄用將 int 作為 needle 傳遞。

範例

範例 1 stristr() 範例

<?php
$email
= 'USER@EXAMPLE.com';
echo
stristr($email, 'e'); // 輸出 ER@EXAMPLE.com
echo stristr($email, 'e', true); // 輸出 US
?>

範例 2 測試是否找到字串

<?php
$string
= 'Hello World!';
if(
stristr($string, 'earth') === FALSE) {
echo
'"earth" 未在字串中找到';
}
// 輸出:"earth" 未在字串中找到
?>

範例 3 使用非「字串」needle

<?php
$string
= 'APPLE';
echo
stristr($string, 97); // 97 = 小寫 a
// 輸出:APPLE
?>

注意事項

注意此函式為二進位安全。

另請參閱

  • strstr() - 尋找字串第一次出現的位置
  • strrchr() - 尋找字串中最後一次出現的字元
  • stripos() - 尋找字串中第一次出現的不區分大小寫子字串的位置
  • strpbrk() - 在字串中搜尋任何一組字元
  • preg_match() - 執行正規表示式比對

新增註解

使用者貢獻的註解 5 個註解

17
dpatton.at.confluence.org
22 年前
PHP 4.2.3 中發生了一項變更,可能會導致出現警告訊息
在使用 stristr() 時產生,即使在舊版 PHP 中沒有產生訊息
產生。

以下程式碼會在 4.0.6 和 4.2.3 中產生警告訊息
stristr("haystack", "");

$needle = ""; stristr("haystack", $needle);

這將 _不會_ 在 4.0.6 中產生「空分隔符號」警告訊息,但在 4.2.3 中則 _會_ 產生
4.0.6,但在 4.2.3 中則 _會_ 產生
unset($needle); stristr("haystack", $needle);

以下是記錄變更內容的 URL
http://groups.google.ca/groups?selm=cvshholzgra1031224321%40cvsserver
7
giz at gbdesign dot net
17 年前
剛剛被 stristr 試圖將針從 Int 轉換為 ASCII 值的情況卡住。

透過將值轉換為字串來解決此問題。

<?php
if( !stristr( $file, (string) $myCustomer->getCustomerID() ) ) {
// 權限被拒絕
}
?>
3
Techdeck at Techdeck dot org
22 年前
stristr() 函式的範例

<?php
$a
= "I like php";
if (
stristr("$a", "LikE PhP")) {
print (
"根據 \$a,您喜歡 PHP。");
}
?>

它會在 $a 中搜尋「like php」(不區分大小寫。不過,strstr() 區分大小寫)。

對於使用 Linux 的人來說... 它類似於「grep」命令。
實際上...「grep -i」。
-1
notepad at codewalkers dot com
19 年前
<?php

function stristr_reverse($haystack, $needle) {
$pos = stripos($haystack, $needle) + strlen($needle);
return
substr($haystack, 0, $pos);
}
$email = 'USER@EXAMPLE.com';
echo
stristr_reverse($email, 'er');
// outputs USER

?>
-3
jukka
10 年前
我認為在 php 5.3 的 stristr 函數中,當包含其他字元的字母 Ä 使用大寫時會有錯誤

http://pastebin.com/5bP6uztY

如果你只搜尋 täry 是可行的,但只要搜尋的單字是 tärylä 就會失敗。 TÄRYL 則沒問題
To Top