2024 年 PHP 日本研討會

ctype_alnum

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

ctype_alnum檢查是否為字母數字元字元

說明

ctype_alnum(混合 $text): 布林值

檢查提供的 字串 text 中的所有字元是否都是字母數字。

參數

text

被測試的字串。

注意事項:

如果提供 -128 到 255 之間(含)的 整數,它會被解釋為單個字元的 ASCII 值(負值會加上 256,以便允許擴展 ASCII 範圍內的字元)。任何其他整數都會被解釋為包含該整數十進制數字的字串。

警告

自 PHP 8.1.0 起,不建議傳遞非字串的引數。未來,該引數將被解釋為字串,而不是 ASCII 字碼點。根據預期的行為,應該將引數強制轉換為 字串 或明確呼叫 chr() 函式。

返回值

如果 text 中的每個字元都是字母或數字,則返回 true,否則返回 false。當使用空字串呼叫時,結果將始終為 false

範例

範例 #1 ctype_alnum() 範例(使用預設地區設定)

<?php
$strings
= array('AbCd1zyZ9', 'foo!#$bar');
foreach (
$strings as $testcase) {
if (
ctype_alnum($testcase)) {
echo
"字串 $testcase 全由字母或數字組成。\n";
} else {
echo
"字串 $testcase 並非全由字母或數字組成。\n";
}
}
?>

以上範例將輸出:

The string AbCd1zyZ9 consists of all letters or digits.
The string foo!#$bar does not consist of all letters or digits.

參見

新增註釋

使用者貢獻的註釋 3 則註釋

thinice at gmail dot com
15 年前
當與 str_replace() 結合使用時,ctype_alnum() 是快速簡便地過濾使用者名稱/資料的絕佳工具。

假設您的使用者名稱允許使用破折號 (-) 和底線 (_) 以及字母數字。

您可以犧牲一些效能來換取簡潔性,而不是使用正規表示式

<?php
$sUser
= 'my_username01';
$aValid = array('-', '_');

if(!
ctype_alnum(str_replace($aValid, '', $sUser))) {
echo
'Your username is not properly formatted.';
}
?>
marcelocamargo at linuxmail dot org
8 年前
`ctype_alnum` 的行為會因作業系統而異,這點也很重要。在基於 UNIX 的作業系統上,如果您傳入的值不是字串(或多載物件),則不論值為何,結果都會是 false。然而,如果我們在 Windows 上執行相同的操作,例如使用 -1 作為字面值(一個減號和一個大於 0 的數字),則結果會是 true。

<?php var_dump(ctype_alnum(-1));
// UNIX: bool(false)
// Windows: bool(true)
匿名
11 年前
小技巧:如果您的伺服器預設沒有啟用 ctype,請將 ctype_alnum($var) 替換為 preg_match('/^[a-zA-Z0-9]+$/', $var)。
To Top