2010-12-13 13 views
15

Bunun için bir işlev bulunamadı. Regex kullanmam gerektiğini mi varsayıyorum?Dize PHP'de 1 büyük harf içeriyorsa nasıl algılanır

URL'nin en az 1 büyük harf içerdiği durumlarda php'de html yönlendirmeleri yapmaya çalışıyorum.

örnek: http://www.domain.com/Michael_Jordanhttp://www.domain.com/michael_jordan adresine yeniden yönlendirilmeye ihtiyacı vardır - yalnızca sorun şu ki en az bir büyük harf olup olmadığını saptamak için bir komut dosyası bulamıyorum. Bu daha verimlidir ise

+0

@Bob: Ben aynı şeyi yapma noktasını göremiyorum DNS adınız büyük/küçük harfe duyarsız olduğundan örneğiniz. – RageZ

+0

Değişen URL site yapısını iyileştirmek için yapmam gereken bir şeydi; geçmiş URL'ler büyük harflere sahipti. Bu yüzden, yeni URL'lere geçiş yaparken bu URL'lerden sayfa gücünü korumaya çalışıyoruz. –

+0

@Bob: Anladım, bu açıklıyor – RageZ

cevap

26

Bazı düzenli ifade çalışmaları gerekir, sen preg_match ve [A-Z]

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

"En azından ** bir üst – zerkms

+0

@zerkms kusur noktanızı kaçırdınız" + " – RageZ

+4

" + "tamamen gereksizdir. – eyelidlessness

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

gerçekten de basit, ama strtolower'ın aşırı sıkıntısı değil mi? – zerkms

+1

Neyin aksine?Tekerleğin bu gibi basit şeyler için yeniden yapılandırılması sadece aptalcadır. –

+0

Regex'in aksine, bu sorunu çözmek için daha semantik bir yol olan imho, (regex'in kendisi yaptığımız şeyi açıklar). – zerkms

4

Ayrıca bu

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

emin deneyebilirsiniz kullanabilirsiniz önerilen diğer iki yöntem.

+0

Daha önce doğrudan PHP'de var olan bir işlev olarak daha doğrudan bir yanıt bu şekilde hissettim. – Anther

+2

Bu, yalnızca alfabetik karakterler içeren dizeler üzerinde çalışacaktır. * Örneğin, dizelerde çalışmayacaktır. hızlı 'veya' noupper1'. – FixMaker

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

Macar utf-8 karakterleriyle test edildiğinde, [A-Z] yalnızca latin1 içindir.

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

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

üretir:

1 
C: preg match 

Bu parens bir maç, bu en az

Look Bora'nın gerekli olmadığını göstermektedir İşte

İlgili konular