본문 내 링크 정규식

본문 내 링크 정규식

QA

본문 내 링크 정규식

본문

1. 본문 내에 

<a href="www.naver.com?query=a&string=b">www.naver.com?query=a&string=b</a> 이런식으로 있을경우 query와 string 값을 어떻게 가져오나요??
 

2. <img src="aaaaa.jpg">ㅁㅁㅁㅁㅁㅁㅁㅁ 이렇게 본문에 있을경우

<img src="aaaaa.jpg"> 이런식으로 어떻게 가져오나요?

 

부탁드리겠습니다! 정규식으로 뺏어와야할텐데..ㅠㅠ 어렵네요.. 정규식은..ㅠ

이 질문에 댓글 쓰기 :

답변 3

1. <a\shref="(.*?)(?:\?|\&)(?<key>[\w]+)(?:\=|\&?)(?<value>[\w+,.-]*)">

2. <img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>


<?php
$str = <<<HEREDOC
<a href="www.a.com?query=a&string=b">www.a.com?query=c&string=d</a>
<img width="100%" src="aaaaa.jpg">ㅁㅁㅁ<a target="_blank" href="www.b.com?query=e&string=f" class=link_a>ㅁㅁㅁㅁㅁ
aaa<a href="www.c.com?query=g&string=" class=link_a>www.c.com?query=i&string=j</a>
ㄴㄴㄴ<img src="bbb.png">ㅇ<img src='ccc.gif' height='80px'>ㅇ<img src=ddd.jpg>ㄹ
HEREDOC;
 
$arr = ['qs' => [], 'img' => []];
preg_match_all('@<a\s.*?href=[\'"]?([^>\'"]+)[\'"]?.*?>@i', $str, $arr['qs']);
preg_match_all('@<img\s.*?src=[^>]+>@i', $str, $arr['img']);
 
if (count($arr['qs']) == 2) {
    $arr['qs'] = $arr['qs'][1];
    array_walk($arr['qs'], function (&$v) {
        $v = parse_url($v, PHP_URL_QUERY);
        parse_str($v, $v);
    });
}

if (count($arr['img']) == 1) {
    $arr['img'] = $arr['img'][0];
}
 
print('<xmp>');
print_r($arr['qs']);
print_r($arr['img']);
print('</xmp>');
?>

www.naver.com?query=a&string=b

/www/index.php 링크로 도착하는 파일에 해당 코드를 넣으셔서 받아 값을 사용하시면 됩니다.


<?php
$query = $_REQUEST['query'];
$string = $_REQUEST['string'];
 
echo $query;  //출력값: a
echo $string;  //출력값: b
 
// 만약 a가 이미지 파일명이라면...
?>
<img src="<?php echo $query?>.jpg">
위처럼 하시면 a.jpg가 됩니다.
답변을 작성하시기 전에 로그인 해주세요.
전체 39
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT