본문 내 링크 정규식
본문
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가 됩니다.
답변을 작성하시기 전에 로그인 해주세요.