2011-03-29 70 views
0

我想測試一個字符串,看它是否有任何數字位數。我試試這個代碼,並沒有任何反應:如果你想有一個布爾值,而不是匹配的數量

function hasNumber($text) { 
    return preg_match("/\d/", $text); 
} 

或者這樣:

function hasNumber($text) { 
    return preg_match("/\d/", $text) > 0; 
} 
+0

你想找到如果字符串*包含*數字或者如果整個字符串表示數值? – 2011-03-29 14:42:49

回答

2

試試這個preg_match與數字的正則表達式:

preg_match('([0-9]+)', $string, $matches); 
+0

preg_match返回匹配的數量,而hasNumber應返回true或false。應該用'=== 1'返回。也不需要方括號。 – Jacob 2011-03-29 14:45:11

+0

即時通訊使用它進行文本驗證我需要代碼來說明它是否有任何數字字符。它似乎沒有讀取函數聲明後的任何代碼? – Tom 2011-03-29 14:46:53

+0

@Jacob由於0以上的任何東西等同於「true」,所以在這種情況下返回int或布爾值並不重要。因爲它可能有多個比賽,因此'=== 1'無論如何都無法運作。如果需要布爾值,可以使用'> 0'。儘管如此,感謝括號提示。我不確定是否包含它。 – tvkanters 2011-03-29 14:47:29

0

你可以使用

<?php 

function hasNumber($text) { 

$length = strlen ($text); 
for ($index=0; $index<$length; $index++){ 
    if (is_numeric($text[$index])){ 
    echo "The name: ".$_POST['text']." is not numeric!"; 
    return true; 
    }else{ 
    echo "The name: ".$_POST['text']." is numeric!"; 
    return false; 
    } 
     } 
    if (isset($_POST['submitText'])){ 
    hasNumber($_POST['text']); 
    } 
    } 

?> 
<form action = 'valid.php' method ='POST'> 
<table> 
    Enter Name :<input name="text"><br> 

    <tr><td><input type="submit" type="text" name="submitText" value="Validate text"></td></tr> 
0

如果你想看看整個字符串表示的數值。

if (is_numeric($_POST['text'])) { 

如果你想找出如果字符串包含一個或多個數字digis:

if (preg_match('[^.0-9]', $_POST['text']) > 0) { 
+0

順便說一句,如果使用帶有preg_match的正則表達式,請考慮是否需要逗號和/或數字中的小數點。例如。 1,324.76可能是一個有效的數字。 – 2011-03-29 14:46:41

相關問題