본문 내 링크 정규식

본문 내 링크 정규식

QA

본문 내 링크 정규식

답변 3

본문

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가 됩니다.
답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 39
© SIRSOFT
현재 페이지 제일 처음으로