2014-09-02 96 views
0

我希望編寫檢查一個變量是否只包含字母不是字符不是數字的PHP代碼,我已經輸入這一點,但它不工作:通過不使用額日格如何檢查一個字符串是否只包含PHP中的字母?

$myVar = "Var#iable5"; 

ereg(^[a-zA-Z] , $myVar) 
+6

旁註:['ereg()'](http://php.net/manual/en/function.ereg.php)已棄用。 *「這個函數從PHP 5.3.0開始已經被拒絕了,依賴這個特性是非常不鼓勵的。」* – 2014-09-02 17:17:45

+1

你能定義「字母」而不是「字符」嗎?是一封信嗎?是Σ? – 2014-09-02 17:20:34

+1

@mattgibson - 或者老ß? – Anthony 2014-09-02 17:28:58

回答

1

開始()。這幾年已經被貶低了,並且會在某些時候從PHP中刪除。另外,你的模式是不正確的。當你使用它的時候是^是一個模式錨,意味着「開始行」。

你想:

preg_match('/[^a-zA-Z]/', $myVar) 

代替。作爲[]組中的第一個字符,^意思是「不是」,所以「不是a-zA-z」,而不是你在嘗試時的「[a-zA-Z]在行首」。

+0

您輸入的函數返回TRUE。它不應該。 – Montoolivo 2014-09-02 17:26:17

6

無需正則表達式:

$result = ctype_alpha($myVar); 
+0

+1終於!保持低水平 – Anthony 2014-09-02 17:27:18

2

PHP有一個內置的功能,要做到這一點:ctype_alpha

$myVar = "Var#iable5"; 
var_dump (ctype_alpha($myVar)); // false 

從文檔:

檢查是否所有的字符在提供的字符串中,文字是字母。在標準C語言環境中,如果$ text只是單個字符,但其他語言包含字母,則標準C語言環境中的字母僅爲[A-Za-z],ctype_alpha()與(ctype_upper($ text)|| ctype_lower($ text)那些被認爲既不是大寫也不是小寫。

相關問題