본문 내 링크 정규식 채택완료

3년 전 조회 1,643

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개

채택된 답변
+20 포인트

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

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

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

답변에 대한 댓글 3개

헉 감사합니다!!!! ㅎㅎㅎ
감사합니다! 정규식에 대해 요즘 좀 보고 있는데 ㅎㅎ; 도움되네요
도움되셨으면 채택부탁해요 ~

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

Copy
<?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 링크로 도착하는 파일에 해당 코드를 넣으셔서 받아 값을 사용하시면 됩니다.

Copy
<?php

$query = $_REQUEST['query'];
$string = $_REQUEST['string'];

 

echo $query;  //출력값: a
echo $string;  //출력값: b

 

// 만약 a가 이미지 파일명이라면...

?>

<img src="<?php echo $query?>.jpg">

위처럼 하시면 a.jpg가 됩니다.
로그인 후 평가할 수 있습니다

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

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

로그인
🐛 버그신고