테스트 사이트 - 개발 중인 베타 버전입니다

특정 문구를 찾아서 추출 하는방법이 필요합니다. 채택완료

그누오키도키 1년 전 조회 1,365

몇시간 삽질을 해도 안되서 질문을 드립니다. ㅠㅠ

 

write_update.head.skin 에서 처리를 해주는데요.

 

wr_content 를 불러내면 html 페이지 안에 이런 문구가 있습니다.

 

  • 재고32개
  •  

    여기서 

  • 재고 문구를 찾아서 사이의 문구를 추출해서

     

    wr_1 에 넣어 주려고 하는데요.

     

    // $wr_content 변수에 로드될 HTML (예시) $wr_content = '

  • 재고32개
  • ';

    // 정규식을 사용하여 텍스트 추출 preg_match('/

  • 재고<\/span>(.*?)<\/li>/', $wr_content, $matches);

    // 추출한 텍스트를 wr_1 변수에 저장 $wr_1 = $matches[1];

     

    이렇게 해주면 wr_1에 내용은 잘들어가는데 본문 내용도 32개 만 남습니다. (테스트로 강제로 값을 넣어 줬습니다 )

     

    여기서 

     

    // 정규식을 사용하여 텍스트 추출 preg_match('/

  • 재고<\/span>(.*?)<\/li>/', $wr_content, $matches);

    // 추출한 텍스트를 wr_1 변수에 저장 $wr_1 = $matches[1];

     

    이렇게만 해주면 아무런 변화가 없어요..

     

    제가 뭘 잘못하고 있는지 모르겠습니다..ㅠㅠ

     

    wr_content 에 여러가지 내용이 있는데 저 문구를 찾아야 하는 부분인데 못찾고 있어서 그런걸까요?

     

    참고로 //$wr_content = str_replace('초과수당', '', $wr_content);

    이거는 잘되는데 preg_match는 딱 지정된 문구만 있어야 작동 하는건가요?

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

    답변 2개

    채택된 답변
    +20 포인트
    1년 전

    다음 코드는

    </p>
    
    <p><?php
    
    // $wr_content 변수에 로드될 HTML (예시)
    
    $wr_content = '<li><span class="stock">재고</span>32개</li>';</p>
    
    <p>// 정규식을 사용하여 텍스트 추출
    
    preg_match('/<li><span class="stock">재고<\/span>(.*?)<\/li>/', $wr_content, $matches);</p>
    
    <p>// 추출한 텍스트를 wr_1 변수에 저장
    
    $wr_1 = $matches[1];</p>
    
    <p>

     

    다음처럼 각각 기대하는 올바른 값이 담깁니다.

    </p>
    
    <p>// $wr_content : <li><span class="stock">재고</span>32개</li>
    
    // $wr_1 : 32개</p>
    
    <p>

     

    문제가 있다면 $wr_content 변수가 다른 어느곳에서 조작되고 있는지 확인이 필요할것 같습니다.

     

    아무런 변화가 없는 경우는 정규식에 의해 파싱될 텍스트 규칙이

    초기 $wr_content 변수에 없는 경우가 있을것 같습니다.

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

    답변에 대한 댓글 6개

    그누오키도키
    1년 전
    지금 문제가 wr_content는 원래대로 html 이 담긴대로 입력이 되어야 하고
    저 wr_content 안에 저 문구가 있는거거든요. 저 문구만 있는게 아니고 여러 내용이 들어 있는데 저문구만 찾아서 wr_1 에 업데이트 됐으면 좋겠습니다.
    $wr_content = '<li><span class="stock">재고</span>32개</li>';라는 값을 직접 입력 하는게 아니거든요... 제가 뭔가 잘못 이해 하고 있는걸까요?
    배르만
    1년 전
    이해된 사항이 맞고
    예시 코드는 잘못되지 않은 올바른 코드이며
    문제가 있다면 예시 코드가 아닌 다른부분에 있을 가능성이 있습니다.

    $wr_content 에 <p>재고 32개</p> 처럼
    미리 정의된 정규식에 해당하지 않는 문자열이 담겨있다면 예시 코드는 동작하지 않을것이고

    별개로 $wr_content 가 넘어온값 그대로 저장되지 않는다면
    다른 어딘가에서 $wr_content 가 조작되고 있을 가능성이 있습니다.
    그누오키도키
    1년 전
    아무리 확인해도 해당 내용이 웹에디터 안에 들어가 있습니다... 그리고 $wr_content = str_replace('재고', '', $wr_content); 이 명령어는 확실히 수행이 됩니다... 재고 라는 글자가 지워져요..정말 이해가 안되네요..ㅠㅠ
    그누오키도키
    1년 전
    에디터에서 html로 창을 바꾸고 내용을 다 지우고 <li><span class="stock">재고</span>32개</li> 이거만 남기고 글을 저장해도 동작을 안하네요... ㅠㅜ
    배르만
    1년 전
    현재 상태에서 추가적인 원인은 알수 없으므로
    직접 하나하나 디버깅하면서 확인이 필요할것 같습니다.
    그누오키도키
    1년 전
    아무것도 안하고 본문에 <li><span class="stock">재고</span>32개</li> 만넣고 write_update.head.skin에다가 $wr_1 = $wr_content; 하니까 wr_1 에 <li><span class="stock">재고</span>32개</li> 이게 들어가 있네요. wr_content 값이 문제가 있는거 같지는 않은데 왜 이러는건지..감이 안오네요.

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

    1년 전

    echo $wr_content; die;

    이렇게 해서 출력된 것을 소스보기하여 

  • 재고32개
  • 와 

    동일한지 비교해보세요

     

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

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

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

    로그인