html 코드내에서,
링크를 세부분으로 나누어 추출하려고 합니다.
다음과 같은 html 내용이 있을때,
**************************************************************
<a target=_blank href='http://www.naver.com'>네이버</a>
<area shape="RECT" target="_blank" coords="10,10,135,60" href="http://www.daum.net" />
**************************************************************
1. <a 혹은 <area 태그 내용
(예: <a target=_blank href='http://www.naver.com'> )
2. 1내용중 href의 내용
(href내용은 큰따옴표 혹은 작은따옴표로 감싸지거나 그냥 링크만 있을수도..)
3. <a 혹은 <area 의 텍스트내용
(위 html의 첫째줄에서는 네이버, 둘째줄에서는 공백이 되겠네요.)
이 세 내용을 preg_match_all 함수와 정규식을 이용해 추출하고자 하는데,
정규식 작성이 잘 되지 않네요..
고수님들의 조언 부탁드립니다.
링크를 세부분으로 나누어 추출하려고 합니다.
다음과 같은 html 내용이 있을때,
**************************************************************
<a target=_blank href='http://www.naver.com'>네이버</a>
<area shape="RECT" target="_blank" coords="10,10,135,60" href="http://www.daum.net" />
**************************************************************
1. <a 혹은 <area 태그 내용
(예: <a target=_blank href='http://www.naver.com'> )
2. 1내용중 href의 내용
(href내용은 큰따옴표 혹은 작은따옴표로 감싸지거나 그냥 링크만 있을수도..)
3. <a 혹은 <area 의 텍스트내용
(위 html의 첫째줄에서는 네이버, 둘째줄에서는 공백이 되겠네요.)
이 세 내용을 preg_match_all 함수와 정규식을 이용해 추출하고자 하는데,
정규식 작성이 잘 되지 않네요..
고수님들의 조언 부탁드립니다.
[이 게시물은 관리자님에 의해 2011-10-31 17:16:08 PHP & HTML에서 이동 됨]
댓글 3개
17년 전
내공이 부족해서 preg_match_all 은 못하겠네요.
<?
$s =<<<HTMLCODE
<a target=_blank href='http://www.naver.com'>네이버</a>
<area shape="RECT" target="_blank" coords="10,10,135,60" href="http://www.daum.net" />
HTMLCODE;
preg_match("/(\<a[^\>]*\>)/i", $s, $match1);
preg_match("/href\=[\"\']?([^\"\'\s\>]+)/i", $match1[1], $match2);
preg_match("/\<a[^\>]*\>(.*)\<\/a/i", $s, $match3);
?>
<textarea rows=10 cols=100><?print_r($match1)?></textarea>
<textarea rows=10 cols=100><?print_r($match2)?></textarea>
<textarea rows=10 cols=100><?print_r($match3)?></textarea>
<?
$s =<<<HTMLCODE
<a target=_blank href='http://www.naver.com'>네이버</a>
<area shape="RECT" target="_blank" coords="10,10,135,60" href="http://www.daum.net" />
HTMLCODE;
preg_match("/(\<a[^\>]*\>)/i", $s, $match1);
preg_match("/href\=[\"\']?([^\"\'\s\>]+)/i", $match1[1], $match2);
preg_match("/\<a[^\>]*\>(.*)\<\/a/i", $s, $match3);
?>
<textarea rows=10 cols=100><?print_r($match1)?></textarea>
<textarea rows=10 cols=100><?print_r($match2)?></textarea>
<textarea rows=10 cols=100><?print_r($match3)?></textarea>
17년 전
http://phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_function&wr_id=241200&sca=&sfl=mb_id&stx=kagla&sop=and
17년 전
<?
$s =<<<HTMLCODE
<a target=_blank href='http://www.naver.com'>네이버</a>
<area shape="RECT" target="_blank" coords="10,10,135,60" href="http://www.daum.net" />
HTMLCODE;
preg_match_all("`<\s*(a[^>\s]*)[^>]* href\s*=\s*([^\s>]+)[^>]*(>(.+)</\s*\\1\s*>|/>)`is", $s, $match);
//print_r($match);
if (is_array($match[1])){
foreach($match[1] as $k => $v){
$text1 .= "$v , ";//태그들
$text2 .= str_replace(array("'", '"'), '', $match[2][$k]) . " , ";//링크들
$text3 .= trim($match[4][$k]) . " , ";//링크에 걸린 텍스트
}
}
echo "본문내의 태그들은? ==> $text1 <br>";
echo "본문내의 링크들은? ==> $text2 <br>";
echo "본문내의 링크에 걸린 텍스트는? ==> $text3 <br>";
?>
결과값
본문내의 태그들은? ==> a , area ,
본문내의 링크들은? ==> http://www.naver.com , http://www.daum.net ,
본문내의 링크에 걸린 텍스트는? ==> 네이버 , ,
요런 정도 하면 되지 않을 까요
$s =<<<HTMLCODE
<a target=_blank href='http://www.naver.com'>네이버</a>
<area shape="RECT" target="_blank" coords="10,10,135,60" href="http://www.daum.net" />
HTMLCODE;
preg_match_all("`<\s*(a[^>\s]*)[^>]* href\s*=\s*([^\s>]+)[^>]*(>(.+)</\s*\\1\s*>|/>)`is", $s, $match);
//print_r($match);
if (is_array($match[1])){
foreach($match[1] as $k => $v){
$text1 .= "$v , ";//태그들
$text2 .= str_replace(array("'", '"'), '', $match[2][$k]) . " , ";//링크들
$text3 .= trim($match[4][$k]) . " , ";//링크에 걸린 텍스트
}
}
echo "본문내의 태그들은? ==> $text1 <br>";
echo "본문내의 링크들은? ==> $text2 <br>";
echo "본문내의 링크에 걸린 텍스트는? ==> $text3 <br>";
?>
결과값
본문내의 태그들은? ==> a , area ,
본문내의 링크들은? ==> http://www.naver.com , http://www.daum.net ,
본문내의 링크에 걸린 텍스트는? ==> 네이버 , ,
요런 정도 하면 되지 않을 까요
게시판 목록
프로그램
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 2430 | 15년 전 | 2508 | ||
| 2429 | 15년 전 | 5499 | ||
| 2428 | 15년 전 | 1461 | ||
| 2427 |
Sizkein
|
15년 전 | 4229 | |
| 2426 | 15년 전 | 1356 | ||
| 2425 | 15년 전 | 1655 | ||
| 2424 | 15년 전 | 1632 | ||
| 2423 |
haejuksun
|
15년 전 | 1623 | |
| 2422 |
haejuksun
|
15년 전 | 1126 | |
| 2421 |
haejuksun
|
15년 전 | 1371 | |
| 2420 |
haejuksun
|
15년 전 | 1517 | |
| 2419 |
|
15년 전 | 1416 | |
| 2418 |
|
15년 전 | 2142 | |
| 2417 |
원더풀라입
|
15년 전 | 1295 | |
| 2416 |
원더풀라입
|
15년 전 | 1350 | |
| 2415 |
원더풀라입
|
15년 전 | 881 | |
| 2414 |
원더풀라입
|
15년 전 | 997 | |
| 2413 |
원더풀라입
|
15년 전 | 961 | |
| 2412 |
원더풀라입
|
15년 전 | 923 | |
| 2411 |
원더풀라입
|
15년 전 | 873 | |
| 2410 |
원더풀라입
|
15년 전 | 926 | |
| 2409 |
원더풀라입
|
15년 전 | 1075 | |
| 2408 |
원더풀라입
|
15년 전 | 1086 | |
| 2407 |
원더풀라입
|
15년 전 | 2609 | |
| 2406 |
원더풀라입
|
15년 전 | 947 | |
| 2405 |
원더풀라입
|
15년 전 | 1600 | |
| 2404 |
원더풀라입
|
15년 전 | 1465 | |
| 2403 | 15년 전 | 1590 | ||
| 2402 | 15년 전 | 1294 | ||
| 2401 |
나도빌더만들까
|
15년 전 | 1776 | |
| 2400 | 15년 전 | 599 | ||
| 2399 | 15년 전 | 1092 | ||
| 2398 | 15년 전 | 1053 | ||
| 2397 | 15년 전 | 2841 | ||
| 2396 | 15년 전 | 3153 | ||
| 2395 | 15년 전 | 1831 | ||
| 2394 | 15년 전 | 1336 | ||
| 2393 |
gamebomb
|
15년 전 | 1961 | |
| 2392 |
gamebomb
|
15년 전 | 1471 | |
| 2391 |
gamebomb
|
15년 전 | 1075 | |
| 2390 | 15년 전 | 3767 | ||
| 2389 |
leadK
|
15년 전 | 1411 | |
| 2388 |
kim7031
|
15년 전 | 1527 | |
| 2387 | 15년 전 | 2738 | ||
| 2386 | 15년 전 | 1452 | ||
| 2385 | 15년 전 | 4172 | ||
| 2384 |
확실한방법
|
15년 전 | 2376 | |
| 2383 |
intel
|
15년 전 | 3151 | |
| 2382 |
확실한방법
|
15년 전 | 1767 | |
| 2381 |
|
15년 전 | 1990 | |
| 2380 |
|
15년 전 | 1301 | |
| 2379 | 15년 전 | 4373 | ||
| 2378 | 15년 전 | 3951 | ||
| 2377 |
메가팩토리
|
15년 전 | 3781 | |
| 2376 | 15년 전 | 5190 | ||
| 2375 | 15년 전 | 3409 | ||
| 2374 | 15년 전 | 1791 | ||
| 2373 | 15년 전 | 1751 | ||
| 2372 | 15년 전 | 1888 | ||
| 2371 | 15년 전 | 1597 | ||
| 2370 | 15년 전 | 3990 | ||
| 2369 | 15년 전 | 2905 | ||
| 2368 | 15년 전 | 2095 | ||
| 2367 | 15년 전 | 1670 | ||
| 2366 | 15년 전 | 1912 | ||
| 2365 | 15년 전 | 2397 | ||
| 2364 | 15년 전 | 1486 | ||
| 2363 | 15년 전 | 2417 | ||
| 2362 | 15년 전 | 1743 | ||
| 2361 | 15년 전 | 1836 | ||
| 2360 | 15년 전 | 1485 | ||
| 2359 | 15년 전 | 2182 | ||
| 2358 | 15년 전 | 1508 | ||
| 2357 |
|
15년 전 | 1925 | |
| 2356 |
헐크매니아
|
15년 전 | 2117 | |
| 2355 |
WebRIA
|
15년 전 | 1200 | |
| 2354 |
WebRIA
|
15년 전 | 1251 | |
| 2353 |
WebRIA
|
15년 전 | 1893 | |
| 2352 |
WebRIA
|
15년 전 | 5337 | |
| 2351 | 15년 전 | 1636 | ||
| 2350 |
WebRIA
|
15년 전 | 2143 | |
| 2349 | 15년 전 | 2342 | ||
| 2348 |
WebRIA
|
15년 전 | 1493 | |
| 2347 |
WebRIA
|
15년 전 | 1304 | |
| 2346 |
WebRIA
|
15년 전 | 2218 | |
| 2345 |
WebRIA
|
15년 전 | 4936 | |
| 2344 | 15년 전 | 2206 | ||
| 2343 | 15년 전 | 2866 | ||
| 2342 | 15년 전 | 1753 | ||
| 2341 | 15년 전 | 3600 | ||
| 2340 | 15년 전 | 4439 | ||
| 2339 | 16년 전 | 3115 | ||
| 2338 | 16년 전 | 2354 | ||
| 2337 | 16년 전 | 2436 | ||
| 2336 | 16년 전 | 2687 | ||
| 2335 | 16년 전 | 2179 | ||
| 2334 |
Sizkein
|
16년 전 | 5518 | |
| 2333 | 16년 전 | 3372 | ||
| 2332 | 16년 전 | 1364 | ||
| 2331 | 16년 전 | 1700 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기