2010-12-13 68 views
15

Không thể tìm thấy hàm cho việc này. Tôi giả sử tôi cần phải sử dụng regex?Cách phát hiện xem chuỗi có chứa 1 chữ cái hoa trong PHP

Tôi đang cố thực hiện chuyển hướng html trong php trong trường hợp url chứa ít nhất 1 chữ cái viết hoa.

ví dụ: http://www.domain.com/Michael_Jordan cần được chuyển hướng đến http://www.domain.com/michael_jordan - chỉ có vấn đề là tôi dường như không thể tìm thấy tập lệnh để phát hiện nếu có ít nhất 1 chữ cái viết hoa tồn tại.

+0

@Bob: Tôi không thấy điểm làm giống như ví dụ của bạn vì tên DNS phân biệt chữ hoa chữ thường. – RageZ

+0

Đó là điều mà tôi được yêu cầu làm để cải thiện cấu trúc trang web thay đổi url - URL quá khứ đã viết hoa chữ cái - vì vậy chúng tôi đang cố gắng duy trì sức mạnh của trang từ những url đó trong khi chuyển sang các url mới. –

+0

@Bob: Tôi hiểu, điều đó giải thích nó – RageZ

Trả lời

26

Một số biểu hiện thường xuyên sẽ có thể làm việc, bạn có thể sử dụng preg_match[A-Z]

if(preg_match('/[A-Z]/', $domain)){ 
// There is one upper 
} 
+1

"Có ** ít nhất ** một trên – zerkms

+0

@zerkms xin lỗi đã bỏ lỡ điểm thiếu của bạn' + ' – RageZ

+4

' + 'là hoàn toàn không cần thiết. – eyelidlessness

27
if (strtolower($url) != $url){ 
    //etc... 
+0

thực sự nó là đơn giản, nhưng không phải là nó overusage của strtolower? – zerkms

+1

Như trái ngược với những gì?Tái phát minh bánh xe cho những thứ đơn giản như thế này thật ngu ngốc. –

+0

Ngược lại với regex, đó là, imho, cách ngữ nghĩa hơn để giải quyết vấn đề này (vì chính bản thân regex mô tả những gì chúng ta làm). – zerkms

4

Bạn cũng có thể thử này

if (!ctype_lower($string)) { 
    // there is at least une uppercase character 
} 

không chắc chắn nếu điều này là hiệu quả hơn hai phương pháp khác được đề xuất.

+0

Tôi "cảm thấy như thế này là câu trả lời trực tiếp hơn, bằng cách là một hàm đã tồn tại trong PHP. – Anther

+2

Điều này sẽ hoạt động trên các chuỗi chỉ chứa ký tự chữ cái *. Ví dụ, nó sẽ không hoạt động trên các chuỗi' quick' hoặc 'noupper1'. – FixMaker

1
preg_match_all('%\p{Lu}%usD', 'aA,éÁ,eE,éÉ,iI,íÍ,oO,óÓ,öÖ,őŐ,uU,úÚ,üÜ,űŰ', $m); 
echo '<pre>'; 
var_dump($m); 
echo '</pre>'; 

Được thử nghiệm với ký tự utf-8 hungarian, [A-Z] chỉ dành cho latin1.

0

Đây là một ví dụ đơn giản:

$mydir = "C:\Users\John" ; 

print preg_match('/^[A-Z]:\.*/', $mydir, $match)."\n" ; 
print $match[0]. " preg match \n" ; 

Tạo:

1 
C: preg match 

Điều này cho thấy các dấu ngoặc là không cần thiết --cho một trận đấu, ít nhất

Nhìn vào này để cụ thể hơn cho ứng dụng của bạn: PHP to SEARCH the Upper+Lower Case mixed Words in the strings?

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