돔파서에서 링크만 찾아서 출력하기 > PHP
PHP

돔파서에서 링크만 찾아서 출력하기

조회 177회 댓글 0건

파싱을 제대로 해야 하는데 잘 안될때가 있는데 그런경우 사용하는 방법중 하나 입니다.

전체를 출력하고 그곳에서 필요한 부분만 사용을 하는데 보통 링크 같은 경우는 이렇게 해도 큰 문제가 되지 않습니다.


1b4fb7ac22e13ded2ea669d5c292fa83_1731158719_5242.png
 

프로그램을 잘 한다는것은 문제 해결을 잘 한다는 것입니다.

문제 해결을 잘하는 사람은 코딩도 잘하는 편이지만 약간 다를 수 있기도 합니다.


한번 사용하면 그만인 프로그램을 만들때는 빠르게 처리하여 마무리하는것이 제일 좋은 방법이겠습니다.



    $dom = new DOMDocument('1.0', 'UTF-8');
    @$dom->loadHTML($html);
    $xpath = new DOMXPath($dom);

    $links = array();
    $anchorTags = $xpath->query("//a[@href]");
    foreach ($anchorTags as $anchor) {
        $href = $anchor->getAttribute('href');
        if ( stristr($href, 'detail') ) {
            $href  = trim($href);
            //  parse_str(parse_url($href, PHP_URL_QUERY), $aGET);
            //  $nddo    = $aGET['nddo'] ?? '';
        }
    }
 


돔파서를 사용할때는 utf-8 이어야합니다. 아니라면 utf-8로 만들어 줘야 하는데 ...

만들어 줘야할 부분은 전체 문서에 한글이 있다면 전체 문서 변환도 필요하면 해야 겠지만 돔파서에선 메타태그에 있는 캐릭터셋이 무엇이냐가 중요합니다. 이부분이 utf-8 아니라면 반드시 변경을 해줘야 합니다.

  • 페이스북으로 공유
  • 트위터로  공유
  • 구글플러스로 공유
전체 214건 1 페이지
  • profile_image 쉽게 한번만 사용할거냐 여러번 사용할거냐에 대한 차이라고 생각해도 됩니다.특별한 경우가 아니라면 다목적으로 사용이 가능한 bindParam 를 많이 사용 합니다. 구분해서 사용하려면 또 신경을 써야 하기 때문에 그렇죠▶ bindParam() (참조 바인딩)  - 변수 자체를 바인딩 (이후 변수 값이 바뀌면 SQL 실행 시 그 값이 적용됨)  - 변수를 직접 전달해야 하고 즉시 값 대입이 불가능  - 반복문에서 같은 변수를 여러 번 사용할 경우 적합. 그리고 파라미터는 상수가 아니라 변수를 넣어줘야 합니다.△ 비유: 패스트푸드점에서 "세트 메뉴 1번"을 주문하고, 음료는 나중에 결정할 수 있는 방식    $menu = "…
  • profile_image 아래는 쿼리 문장에 문자열을 넣어주는 일반적인 방식으로 SQL 공격에 무척 취약한 방식의 예 입니다.보통 아래와 같은 문제가 발생하고 실무에선 쿼리를 보면 먼저 정보를 얻는것에서 시작을 합니다.    # SQL 인젝션이 성공하는 경우 (취약한 코드)    # 결과: SELECT * FROM users WHERE username = ''; DROP TABLE users; -- AND id = 123    $test11 = "'; DROP TABLE users; --";    $test22 = 123;    $sql = "SELECT * FROM users WHERE username = '$test11' AND id = $…
  • profile_image 문자열:s 숫자:i 이렇게 사용하는 방식은 파라미터가 많으면 복잡해서 알아보기 힘들죠그래서 만들어진 사용자 함수 입니다.    # MySQLi에서 Named Parameter처럼 사용할 수 있도록 변환하는 사용자 함수    function prepareNamedQuery($mysqliCon, string $sql, $params) {        preg_match_all('/:\w+/', $sql, $matches);        $namedParams = $matches[0];         $sql = str_replace($namedParams, '?', $sql);        $values = [];     …
  • profile_image 아래는 도메인 목록을 배열로 가지고 있다고 가정하고 만들어진 프로그램 입니다.kr의 경우 요즘은 utf8로 나오기 때문에 euckr 환경이신분은들은 캐릭터셋을 변경하는 기능이 한줄 더 들어가야 합니다.그리고 후이즈 조회는 너무 많이 하면 차단 됩니다.여기서 너무 많다는 기준은 없지만 최소 몇 백은 되기 때문에 도메인 만료일 체크하기 위해서 실행하는것에는 문제는 없습니다.    # 루트 도메인만 추출    $root_domains = [];    foreach ($domains as $domain) {        if ($domain === '_default_') continue; // 제외        if (preg…
  • profile_image 앞으로 캐릭터셋은 utf-8이 아니라 utf-8 bom을 사용해야 합니다. utf-8 캐릭터셋은 한글이 깨져서 보이는데 이때문에 예전에 ANSI로 저장(euc-kr) 처리를 많이 하곤 했습니다. 하지만 현재는 utf-8과 호환되는 utf-8 bom 사용하는 것이 좋겠지요.그래야 더 풍부한 캐릭터셋 특수문자(이모티콘)를 사용할 수 있기 때문에 그렇습니다. euc-kr은 이모티콘을 사용하지 못해요~ 엑셀(Excel)에서 CSV 파일 한글 깨지지 않게 하려면  - 엑셀에서 바로 CSV 열기: EUC-KR 또는 UTF-8 BOM 캐릭터셋 참고사항  - 글로벌 호환성 생각: UTF-8 BOM  - 서버 시스템 처리 위주: UTF…
  • profile_image csv파일 읽어서 처리할 때 날짜를 기준으로 하는데 같은 날짜가 아니라 다른 날짜로 처리 해야 되는 경우 만들어진 프로그램 입니다.csv파일의 캐릭터셋에 대해선 별도 정리가 필요한 상태이고 윈도우10 사용한지 오래 되었는데 이 문제가 업그레이드 되면서 변경 되었는지 어땟는지는 현재로선 중요하지 않고 잘 나오면 그만인거죠cmd도 예전엔 cp949로해서 처리 했는데 지금은 둘다 잘 보이는 구조로 되어 있는듯 합니다.그리고 엑셀은 euckr, utf-8 bom 두개가 문제 없으며 utf-8은 안됩니다.<?php// 공휴일 배열$holidays = [    "2025-01-01", // 신정    "2025-02-11",…
  • profile_image utf-8 bom 표시 부분이 앞 3바이트에 있는것을 삭제해서 utf-8 으로 처리하기 위해서 필요한 함수 입니다.이런것이 필요한 이유는 mb_convert_encoding 함수로 euc-kr로 변환을 하면 안되는것은 아니지만 ? 같은것이 발생합니다.그렇기 때문에 아래 함수처럼 삭제하고 처리하면 문제 없이 잘 됩니다.    function remove_utf8_bom($text) {        if (substr($text, 0, 3) === "\xEF\xBB\xBF") {            return substr($text, 3);        }        return $text;    } $ewy_ut…

상업적 이용 금지. 컨텐츠는 개인 용도로만 사용이 가능 합니다.