2011-01-27 1 views
0

은 어떻게이URL에 대문자가 하나 이상 있는지 확인하는 정규식 코드 란 무엇입니까? (PHP) 현서 목적

http://www.Domain.com/Jimmy_Smith

http://www.domain.com/jimmy_smith

에 같은 것을에서 코드의 라인을 변경하도록 지시했다 최소 1 개의 대문자가 있는지를 탐지하는 코드 행 r은 ur?

... 서구 일관성. Regex가 아마도 가장 효율적인 방법이라는 것을 알지만 Regex에 대해서는 경험이별로 없습니다.

+2

가능한 중복 [방법 :

을 문자열이 동일는 소문자 것없는 자신을 않는 경우, 적어도 하나의 대문자 문자가 있습니다 문자열에 PHP에서 대문자가 1 개 포함되어 있는지 검색] (http://stackoverflow.com/questions/4426327/how-to-detect-if-string-contains-1-uppercase-letter-in-php) – Greg

+1

항상 그렇기 때문에 소문자로 쓰고 싶다면 소문자가 아닌지 왜 말해야할까요? 그것은 관계없이, 훨씬 더 깔끔하고 코드의 한 줄을 strtolower한다. – tobyodavies

+0

좋은 지적 - 나는 이것을하기 전에해야만했다. –

답변

2
if (preg_match('/[A-Z]/', $url)) { 
    ... has one upper case char ... 
} else { 
    ... no uppercase chars at all ... 
} 
+0

완벽한 - 감사합니다. –

4

정규식은 최선의 방법이 아닙니다. 왜 strtolower를 사용하지 않습니까?

http://php.net/manual/en/function.strtolower.php

+0

그것은 네거티브 리디렉션 루프를 유발할 수 있습니다. –

+0

parse_url(), strtolower()를 실행 한 다음 http_build_url()을 사용하여 url을 다시 작성하십시오. 자세한 지시 사항처럼 보이지만 regexp보다 깔끔합니다. –

+0

+1 정규식은 비용이 많이 들며 가능할 때마다 특히 작은 작업에는 사용하지 않는 것이 좋습니다. – Mahn

1

당신은 정규식 필요가 없습니다의

function hasUpper($x) 
{ 
    return strtolower($x)!=$x; 
} 
관련 문제