2010-11-06 33 views
6

Tôi đang cố triển khai hàm dưới đây. Nó sẽ là tốt nhất để sử dụng một số loại regex ở đây? Tôi cần phải nắm bắt số lượng quá.Kiểm tra xem một chuỗi có kết thúc bằng một số trong PHP

function endsWithNumber($string) { 
    $endsWithNumber = false; 

    // Logic 

    return $endsWithNumber; 
} 
+0

Vì nó chỉ là một ký tự, nên thực sự tốt nhất là không bận tâm đến việc sử dụng regex. – DaiYoukai

Trả lời

7
$test="abc123"; 
//$test="abc123n"; 
$r = preg_match_all("/.*?(\d+)$/", $test, $matches); 
//echo $r; 
//print_r($matches); 
if($r>0) { 
    echo $matches[count($matches)-1][0]; 
} 

regex được giải thích như sau:.

*? - Điều này sẽ mất tất cả các ký tự trong chuỗi từ khi bắt đầu cho đến khi một kết quả phù hợp cho phần tiếp theo cũng được tìm thấy.

(\ d +) $ - đây là một hoặc nhiều chữ số cho đến khi kết thúc chuỗi, được nhóm lại.

không có? trong phần đầu tiên, chỉ có chữ số cuối cùng sẽ được khớp trong phần thứ hai vì tất cả các chữ số trước khi nó sẽ được chiếm bởi. *

19

return is_numeric(substr($string, -1, 1));

chỉ này kiểm tra để xem nếu ký tự cuối cùng trong chuỗi là số, nếu bạn muốn bắt và trở về con số nhiều chữ, bạn có thể phải sử dụng một regex.

Một regex phù hợp sẽ là /[0-9]+$/ sẽ lấy một chuỗi số nếu nó ở cuối dòng.

+0

Đối với regex, bạn có thể thay thế [0-9] bằng \ d –

+1

Và đối với ký tự đầu tiên, bạn chỉ có thể chuyển đổi nó thành 'is_numeric (substr ($ string, 0, 1));' – DaiYoukai

+0

+1 để giới thiệu một thay thế cho việc sử dụng một regex – Maurice

1

theo ý kiến ​​của tôi Cách đơn giản để tìm chuỗi kết thúc bằng số là

$length=strlen("string1")-1; 
if(is_numeric($string[$length])) 
{ 
    echo "String Ends with Number"; 
} 
Các vấn đề liên quan