2017-06-08 1 views
0

Ich habe ein Skript, das ich verwenden möchte, um Benutzereingaben von den Clients zu verarbeiten. Ich habe mehrere Überprüfungen, aber die allererste erfordert, dass die übermittelte Zeichenfolge numerisch ist.php ctype_digit nicht zu sagen, ob die Zeichenfolge numerisch ist

Dies ist der Code

<?php 
$num = '09201x11222'; 

//Check whether the string is numeric 
function test($str){ 
    return ctype_digit($str); 
} 

echo test($num); 

echo '<br/><br/><br/>'; 

//Check if the length is exactly 10 characters 
$len = strlen($num); 
if($len < 10 || $len > 10){ 
    echo 'that number is wrong'; 
} 
elseif($len == 10){ 
    echo 'that number is of required length'; 
} 
echo '<br/><br/><br/>'; 
//Trim Leading Zero 
$afterTrim = substr($num,1); 

echo $afterTrim; 

//Append countrycode 380 
echo '<br/><br/><br/>'; 

$countryCode = '380'; 
$afterAppend = $countryCode.$afterTrim; 

echo $afterAppend; 

?> 

ist, wenn die $num korrekt ist, bekomme ich 1 auf dem Bildschirm, aber wenn seine falsch ich gar nichts bekommen. Warum das?

Antwort

0

Das Echo false führt zu einem ungültigen Ausdruck. Dies liegt daran, dass ein echo einen Boolean in eine Zeichenfolgendarstellung umwandeln muss.

Wie Sie aus Methodensignatur

bool ctype_digit (string $text) 

dies gibt einen booleschen Wert sehen, die durch Echo umgewandelt wird: wenn true, wird es 1 drucken, sonst ist es nichts gedruckt wird.

Von manual

Ein boolean TRUE Wert auf den String "1" umgewandelt. Boolean FALSE wird in "" (die leere Zeichenfolge) konvertiert. Dies ermöglicht die Konvertierung zwischen Booleschen Werten und String-Werten.

+0

Wie soll ich Fehler in diesem einen? –

+0

@Mongodb Sie sollten es nicht direkt echo, aber überprüfen Sie für 'true' oder' false' und drucken Sie eine angemessene Nachricht. – DonCallisto

+0

Ich habe es geschafft, diese Echotest ($ num) zu tun? 'wahr': 'falsch'; ' –

Verwandte Themen