2010-12-13 67 views
15

找不到此功能。我假設我需要使用正則表達式?如何檢測字符串是否包含PHP中的1個大寫字母

我想在php中至少包含1個大寫字母的情況下做html重定向。

例如:http://www.domain.com/Michael_Jordan需要重定向到http://www.domain.com/michael_jordan - 唯一的問題是我似乎無法找到一個腳本來檢測,如果至少有一個大寫字母存在。

+0

@Bob:我沒有看到的做點相同您的示例,因爲DNS名稱不區分大小寫。 – RageZ 2010-12-13 06:37:10

+0

這是我被要求做的事情,以改善seo - 改變的網站結構 - 過去的網址已經大寫字母 - 所以我們試圖保留頁面的力量從這些網址轉換到新的。 – 2010-12-13 06:49:27

+0

@Bob:我明白了,這解釋了它 – RageZ 2010-12-13 06:51:35

回答

26

一些正則表達式應該能夠工作,你可以使用preg_match[A-Z]

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

「有**至少**一個上一個 – zerkms 2010-12-13 06:32:54

+0

@zerkms對不起你錯的點失蹤'+' – RageZ 2010-12-13 06:34:34

+4

'+'是完全沒有必要的 – eyelidlessness 2010-12-13 06:37:06

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

確實很簡單,但不是它過度使用strtolower? – zerkms 2010-12-13 06:38:17

+1

而不是什麼?爲這種簡單的東西重塑車輪只是愚蠢的。 – 2010-12-13 06:40:13

+0

與正則表達式(即imho)相比,解決此問題的更多語義方法(因爲正則表達式本身描述了我們所做的)。 – zerkms 2010-12-13 06:41:55

4

你也可以試試這個

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

不知道這是不是更有效提出另外兩種方法。

+0

我覺得這是更直接的答案,作爲一個已經存在於PHP中的函數。 – Anther 2013-07-02 15:08:07

+2

這將適用於包含字母*只*的字符串,例如,它不會對字符串'the快速「或」noupper1「。 – FixMaker 2013-09-04 11:29:49

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

經過匈牙利語utf-8字符測試,[A-Z]僅適用於latin1。

0

下面是一個簡單的如:

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

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

產地:

1 
C: preg match 

這表明,括號是不必要的 - 獲得一個匹配,至少

看這更具體的爲您的應用程序:PHP to SEARCH the Upper+Lower Case mixed Words in the strings?

相關問題