2013-12-13 2 views
1

와 일치하는 URL : 정지 정규식 분할 다음 코드를 감안할 때 preg_split

$regex = '/(http\:\/\/|https\:\/\/)([a-z0-9-\.\/\?\=\+_]*)/i'; 
$text = preg_split($regex, $note, -1, PREG_SPLIT_DELIM_CAPTURE); 

그와 같은 배열을 반환 : 반환 된 배열의 사이즈 = 3이 있다면

array (size=4) 
    0 => string '...' (length=X) 
    1 => string 'https://' (length=8) 
    2 => string 'duckduckgo.com/?q=how+much+wood+could+a+wood-chuck+chuck+if+a+wood-chuck+could+chuck+wood' (length=89) 
    3 => string '...' (length=X) 

내가 그것을 선호, 하나의 URL로 이것이 가능한가?

+0

내 정규 표현식이 두 부분, 프로토콜 및 도메인이되어야한다고 생각합니다. 전체 URL을 반환하는 정규식을 원합니다. –

답변

3

확실히 할 수 있습니다. 정규 표현식에서 추가로 일치하는 그룹을 제거하면됩니다.

$regex = '#(https?://[a-z0-9.?=+_-]*)#i'; 
$text = preg_split($regex, $note, -1, PREG_SPLIT_DELIM_CAPTURE); 

이제 결과 배열은 특수 문자의 대부분이 필요하지 않기 때문에 나는 또한 또한 정규식을 단순화 별도의 그룹을 제거 외에도 대신 4

의 배열의 3 개 요소가됩니다 다음 코드를 사용해보십시오 문자 클래스 안에서 이스케이프 처리됩니다.

관련 문제