테스트 사이트 - 개발 중인 베타 버전입니다

정규식 질문있습니다~! 채택완료

그누위즈 5년 전 조회 3,400

</p>

<p>$str = '<p><img src="/shop/lib/meditor/../../data/editor/1fdf6438e02eff9a">
</p>';</p>

<p>

위와 같이 <img> 태그안에 있는 src의 링크 부분만 출력을 하고 싶습니다.

형식은 대부분 비슷하나 img 태그는 $str 변수에 무조건 1개만 들어갑니다.

정규식으로 해당 안의 url을 가져오고 싶은데 참고할수있도록 알려주시면 감사하겠습니다.!

댓글을 작성하려면 로그인이 필요합니다.

답변 4개

채택된 답변
+20 포인트
B
5년 전

* for beginners. 참고로 추가합니다.

</p>

<p>// 1. HTML 내용 중

$str = '<p><img sor="test" src="/shop/lib/meditor/../../data/editor/1fdf6438e02eff9a">
</p>';</p>

<p> </p>

<p>// 2. 필요한 부분

// <img src="/shop/lib/meditor/../../data/editor/1fdf6438e02eff9a"></p>

<p> </p>

<p>// 3. 패턴 지정

// .*?는 간단하게 뒤쪽의 문자열 전까지의 문자열. *라서 없을 수 있음.

// [^"]는 "가 아닌 문자. + 붙어서 1글자 이상. src 부분만 따로 할당하기 위해 ()로 감싸기.

// <img.*?src="([^"]+)"></p>

<p> </p>

<p>// 4. 실제 구하기 ... 찾으면 src 내용, 찾지 못하면 빈 문자열.</p>

<p>// 구분자 #로 지정했는데, 패턴에 사용되지 않는 문자로 하면 따로 Escape 처리하지 않아도 되어 편함.</p>

<p>// 예) /<div>.*?<\/div>/ → #<div>.*?</div>#</p>

<p>$img = preg_match('#<img.*?src="([^"]+)">#', $str, $match) ? $match[1] : '';</p>

<p>echo $img; // /shop/lib/meditor/../../data/editor/1fdf6438e02eff9a</p>

<p>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

그누위즈

많은 분들 댓글 감사합니다.

좋은 하루 보내세요^^

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

5년 전

간단하게 한다면 /<img src="(.*)">/ 입니다.

 

()는 그룹을 의미하고

.*이  ""안에 있는 모든 글자를 의미합니다.

 

테스트는 https://regex101.com/">https://regex101.com/ 입니다.

 

진서기님의 정규식은 모든 경우의 수를 넣은 것입니다.

 

중간에 img와 src사이에 다른 것이 들어가도 동작되게 하는 정규식입니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

진서기
5년 전
로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인