오늘 질문과 답변 시스템을 작성하고 온라인에 접속해보니 많은 사람들이 링크를 게시하고 있는 것을 발견했습니다. 사업부에서 웹사이트 주소를 필터링해 달라고 요청했기 때문에 문자열 URL 주소를 추출하는 기능을 알려드리겠습니다. 코드는 다음과 같습니다.
$str ='本文实例讲述了php匹配字符串里所有URL地址的方法。http://www.manongjc.com 分享给大家供大家参考'; preg_match_all("/http:[\/]{2}[a-z]+[.]{1}[a-z\d\-]+[.]{1}[a-z\d]*[\/]*[A-Za-z\d]*[\/]*[A-Za-z\d]*/",$str,$array2); print_r($array2);
실행 결과는 다음과 같습니다.
( [0] => Array ( [0] => http://www.manongjc.com ) )
여기에서는 preg_match_all 함수가 주로 사용됩니다.
preg_match_all - 전역 정규화 수행 표현식 일치
구문:
int preg_match_all ( string pattern, string subject, array matches [, int flags] )
주어진 정규 표현식과 일치하는 모든 콘텐츠를 제목에서 검색합니다. 패턴별로 결과를 플래그 일치 항목에 지정된 순서대로 넣습니다.
첫 번째 일치 항목을 찾은 후 이전 일치 항목의 끝부터 후속 검색이 시작됩니다.
PREG_PATTERN_ORDER 및 PREG_SET_ORDER에 특별한 주의를 기울이세요
플래그는 다음 플래그의 조합일 수 있습니다(PREG_PATTERN_ORDER와 PREG_SET_ORDER를 함께 사용하는 것은 의미가 없습니다).
If PREG_PATTERN_ORDER
을 사용하여 $matches[0]가 모든 패턴 일치의 배열이고 $matches[1]이 첫 번째 대괄호의 하위 패턴과 일치하는 문자열 배열이 되도록 결과를 정렬합니다. (즉, $matches[0] [0]은 모든 패턴 일치의 두 번째 항목이고, $matches[0] [1]은 모든 패턴 일치의 두 번째 항목이며, $matches[1] [0]은 다음과 일치합니다. 각 항목은 괄호 안의 첫 번째 항목인 $matches[1] [0]은 각 괄호의 두 번째 항목과 일치합니다.
<?php preg_match_all ("|<[^>]+>(.*)</[^>]+>|U","<b>example: </b><div align=left>this is a test</div>",$out, PREG_PATTERN_ORDER); /* http://www.manongjc.com/article/1591.html */ print $out[0][0].", ".$out[0][1]."\n"; print $out[1][0].", ".$out[1][1]."\n"; ?>
출력 결과:
<b>example: </b>, <div align=left>this is a test</div> example: , this is a test
더 보기 정규식을 사용하여 문자열의 URL을 얻는 방법에 대한 관련 기사는 PHP 중국어 웹사이트에 주목하세요!