2011-11-22 26 views
6

Làm thế nào tôi có thể thêm/improvised mã của tôi như thế giọng nói tiếng Tây Ban Nha sẽ được coi là hợp lệ, thêm vào bảng chữ cái bình thường (az)PHP Regex xác nhận chữ và giọng Tây Ban Nha

Tôi đã sau trong mã của tôi

public static function IsAlpha($s){ 
    $reg = "#[^a-z\s-]#i"; 
    $count = preg_match($reg, $s, $matches); 
    return $count == 0; 
} 
+3

Câu hỏi có khả năng trùng lặp có câu trả lời: [PHP: PREG: Cách so khớp các ký tự đặc biệt như mộ?] (Http://stackoverflow.com/questions/2133758/php-preg-how-to-match-special- chars-like-a-grave) – Wiseguy

+0

Đó là một câu hỏi tương tự, tuy nhiên, tôi vẫn không thể tìm ra cách tích hợp nó với regex hiện tại của tôi. – xar

+1

@Wiseguy: bạn nên đăng nhận xét này làm câu trả lời. – Toto

Trả lời

20

Như tìm thấy trong các câu trả lời cho this question, bạn có thể phù hợp với ký tự có dấu sử dụng đầy đủ ThưUnicode property\p{L}. Điều đó bao gồm thường xuyên a-z nhân vật cùng với những người có dấu, vì vậy thay a-z trong biểu hiện của bạn với điều này như sau:

$reg = "#[^\p{L}\s-]#u"; 

Lưu ý rằng để sử dụng này, bạn cần UTF-8 modifier u sau delimiter bế mạc của bạn, như các tài liệu nói như Unicode "các loại ký tự khả dụng khi Chế độ UTF-8 được chọn ".

+0

+1, nhưng không có nhu cầu cho tôi gắn cờ. – Toto

+0

@ M42 Tốt. Cờ không phân biệt chữ hoa chữ thường là không cần thiết, trừ khi regex được mở rộng sau đó và các phần khác của mẫu cần nó. – Wiseguy

+1

Trong trường hợp của tôi, tôi phải thêm công cụ sửa đổi u (UTF8) để nó hoạt động. – user276648

1

tôi nghĩ rằng bạn có thể sử dụng hexadecimal representation của mỗi chữ cái:

<?php 
function IsAlpha($sString) 
{ 

    $reg = "#[a-zA-Z\xE1\xE9\xED\xF3\xFA\xC1\xC9\xCD\xD3\xDA\xF1\xD1]+#i"; 
    $count = preg_match_all($reg, $sString, $matches, PREG_OFFSET_CAPTURE); 
    return $matches; 
} 
echo '<pre>'; 
print_r(IsAlpha("abcdefgh ñ á é í ño 123 asd asáéío nmas asllsdasd óúfl ÑABDJÓ ÚñÍÉ")); 
echo '</pre>'; 

tôi không biết nếu có tất cả các chữ cái, nhưng bạn có thể bổ sung thêm với link này.

Các vấn đề liên quan