2011-12-08 2 views
-1

유효한 URL을 테스트하는 정규식 목록이있는 페이지를 찾았습니다. http://mathiasbynens.be/demo/url-regex문자열로 된 링크 찾기

디에고 뻬니 니 (Diego Pernini)의 제품이 최고의 선택 인 것으로 보입니다. https://gist.github.com/729294

이제이 정규 표현식을 문자열의 URL을 찾는 데 사용할 수 없습니다.

$string = 'Really digging new the twitter design! http://t.co/71dEuIY8'; 

이 정규식 내가 URL 만 포함 된 문자열을 사용하는 경우 유효한 URL과 일치 않는 나에게 0

preg_match_all('%^(?:(?:https?|ftp)://)(?:\S+(?::\S*)[email protected]|\d{1,3}(?:\.\d{1,3}){3}|(?:(?:[a-z\d\x{00a1}-\x{ffff}]+-?)*[a-z\d\x{00a1}-\x{ffff}]+)(?:\.(?:[a-z\d\x{00a1}-\x{ffff}]+-?)*[a-z\d\x{00a1}-\x{ffff}]+)*(?:\.[a-z\x{00a1}-\x{ffff}]{2,6}))(?::\d+)?(?:[^\s]*)?$%iu', $string, $match); 

을 제공합니다

나는이 문자열에서 URL을 분리하려면 :

$string = 'http://t.co/71dEuIY8'; 

유효한 url 또는 url을 격리하기 위해이 정규 표현식을 조정하는 방법은 무엇입니까? 엘?

+2

여러 번 물어 본 후 검색하십시오. –

+0

[regexp analyzer] (http://xenon.stanford.edu/~xusch/regexp/analyzer.html?regex=%5E%28%3F%3A%28%3F%3Ahttps%3F%7Cftp%29%)를 참조하십시오. 3A//%29%28%3F%3A%5CS+%28%3F%3A%3A%5CS*%29%[email protected]%7C%5Cd%7B1%2C3%7D%28%3F%3A%5C.%5Cd % 7B1 % 2C3 % 7D % 29 % 7B3 % 7D % 7C % 28 % 3F % 3A % 28 % 3F % 3A % 5Ba-Z % 5Cd % 5Cx % 7B00a1 % 7D- % 5Cx % 7Bffff % 7D % 5D + - % 3F % 29 * % 5Ba-z % 5Cd % 5Cx % 7B00a1 % 7D- % 5Cx % 7Bffff % 7D % 5D + % 29 % 28 % 3F % 3A % 5C % 28 % 3F % 3A % 5Ba-z % 5Cd % 5Cx % 7B00a1 % 7D- % 5Cx % 7Bffff % 7D % 5D + - % 3F % 29 * % 5Ba-z % 5Cd % 5Cx % 7B00a1 % 7D- % 5Cx % 7Bffff % 7D % 5D + % 29 * % 28 % 3F % 3A % 5C % 5Ba-z % 5Cx % 7B00a1 % 7D- % 5Cx % 7Bffff % 7D % 5D % 7B2 % 2C6 % 7D % 29 % 29 % 28 % 3F % 3A % 3A % 5Cd + % 29 % 3F % 28 % 3F % 3A – mario

+0

이러한 일반 표현식은 문자열에서 URL을 찾는 데 사용되지 않으므로 문자열이 유효한 URL인지 확인하기위한 것입니다. 당신은 실제로 무엇을하고 싶습니까? 텍스트에서 URL을 찾고 링크로 변환하고 싶습니까? 그 정규 표현식은'www.example.com'과'http : //www.google.com? q = test'에서 실패합니다. 예를 들어 어느 브라우저의 주소 표시 줄에서도 완벽하게 작동합니다. 또한 구두점을 URL의 일부로 해석합니다. 예 : 'Go to http : //stackoverflow.com/questions! '에서'!'는 URL의 일부가되며, 결국 404 페이지가됩니다. – mercator

답변

1

문제는^시작과 끝에 $입니다. 이렇게하면 링크가 시작되고 끝나야합니다. 이것이 문자열에서 분리 된 링크와 일치하는 이유입니다.

+2

누군가가 방금 regexp를 사용하여 URL 유효성 검사를 위해 일부 복사/붙여 넣기를하고 그 regexp가 실제로 무엇을하는지 이해하지 않고 다른 목적으로 사용하려고 할 때 이런 일이 발생합니다. –

관련 문제